Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Framework / System / Windows / Automation / Peers / StatusBarAutomationPeer.cs / 1 / StatusBarAutomationPeer.cs
using System; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security; using System.Text; using System.Windows; using System.Windows.Automation.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Interop; using System.Windows.Media; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class StatusBarAutomationPeer : FrameworkElementAutomationPeer { /// public StatusBarAutomationPeer(StatusBar owner): base(owner) {} /// protected override string GetClassNameCore() { return "StatusBar"; } /// protected override AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.StatusBar; } /// protected override ListGetChildrenCore() { List list = new List (); ItemsControl itemscontrol = Owner as ItemsControl; if (itemscontrol != null) { foreach (object obj in itemscontrol.Items) { if (obj is Separator) { Separator separator = obj as Separator; list.Add(UIElementAutomationPeer.CreatePeerForElement(separator)); } else { StatusBarItem item = itemscontrol.ItemContainerGenerator.ContainerFromItem(obj) as StatusBarItem; if (item != null) { //If the item is a string or TextBlock or StatusBarItem //StatusBarItemAutomationPeer will be created to show the text //Or we'll use the control's automation peer if (obj is string || obj is TextBlock || (obj is StatusBarItem && ((StatusBarItem)obj).Content is string)) { list.Add(UIElementAutomationPeer.CreatePeerForElement(item)); } else { List childList = GetChildrenAutomationPeer(item); if (childList != null) { foreach (AutomationPeer ap in childList) { list.Add(ap); } } } } } } } return list; } /// /// Get the children of the parent which has automation peer /// private ListGetChildrenAutomationPeer(Visual parent) { Invariant.Assert(parent != null); List children = null; iterate(parent, (IteratorCallback)delegate(AutomationPeer peer) { if (children == null) children = new List (); children.Add(peer); return (false); }); return children; } private delegate bool IteratorCallback(AutomationPeer peer); // private static bool iterate(Visual parent, IteratorCallback callback) { bool done = false; AutomationPeer peer = null; int count = parent.InternalVisualChildrenCount; for (int i = 0; i < count && !done; i++) { Visual child = parent.InternalGetVisualChild(i); if (child != null && child.CheckFlagsAnd(VisualFlags.IsUIElement) && (peer = CreatePeerForElement((UIElement)child)) != null) { done = callback(peer); } else { done = iterate(child, callback); } } return (done); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved. using System; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using System.Security; using System.Text; using System.Windows; using System.Windows.Automation.Provider; using System.Windows.Controls; using System.Windows.Controls.Primitives; using System.Windows.Interop; using System.Windows.Media; using MS.Internal; using MS.Win32; namespace System.Windows.Automation.Peers { /// public class StatusBarAutomationPeer : FrameworkElementAutomationPeer { /// public StatusBarAutomationPeer(StatusBar owner): base(owner) {} /// protected override string GetClassNameCore() { return "StatusBar"; } /// protected override AutomationControlType GetAutomationControlTypeCore() { return AutomationControlType.StatusBar; } /// protected override List GetChildrenCore() { List list = new List (); ItemsControl itemscontrol = Owner as ItemsControl; if (itemscontrol != null) { foreach (object obj in itemscontrol.Items) { if (obj is Separator) { Separator separator = obj as Separator; list.Add(UIElementAutomationPeer.CreatePeerForElement(separator)); } else { StatusBarItem item = itemscontrol.ItemContainerGenerator.ContainerFromItem(obj) as StatusBarItem; if (item != null) { //If the item is a string or TextBlock or StatusBarItem //StatusBarItemAutomationPeer will be created to show the text //Or we'll use the control's automation peer if (obj is string || obj is TextBlock || (obj is StatusBarItem && ((StatusBarItem)obj).Content is string)) { list.Add(UIElementAutomationPeer.CreatePeerForElement(item)); } else { List childList = GetChildrenAutomationPeer(item); if (childList != null) { foreach (AutomationPeer ap in childList) { list.Add(ap); } } } } } } } return list; } /// /// Get the children of the parent which has automation peer /// private ListGetChildrenAutomationPeer(Visual parent) { Invariant.Assert(parent != null); List children = null; iterate(parent, (IteratorCallback)delegate(AutomationPeer peer) { if (children == null) children = new List (); children.Add(peer); return (false); }); return children; } private delegate bool IteratorCallback(AutomationPeer peer); // private static bool iterate(Visual parent, IteratorCallback callback) { bool done = false; AutomationPeer peer = null; int count = parent.InternalVisualChildrenCount; for (int i = 0; i < count && !done; i++) { Visual child = parent.InternalGetVisualChild(i); if (child != null && child.CheckFlagsAnd(VisualFlags.IsUIElement) && (peer = CreatePeerForElement((UIElement)child)) != null) { done = callback(peer); } else { done = iterate(child, callback); } } return (done); } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ModulesEntry.cs
- TextParagraphView.cs
- XmlAutoDetectWriter.cs
- SafeEventHandle.cs
- SafeRightsManagementQueryHandle.cs
- codemethodreferenceexpression.cs
- HwndSourceKeyboardInputSite.cs
- DataExpression.cs
- XmlUTF8TextWriter.cs
- DnsEndPoint.cs
- SchemaNamespaceManager.cs
- SqlDependencyUtils.cs
- DbCommandTree.cs
- Shape.cs
- TextBoxView.cs
- EditorPartDesigner.cs
- UnsafeCollabNativeMethods.cs
- TemplateBaseAction.cs
- WeakReadOnlyCollection.cs
- SectionInformation.cs
- ServerIdentity.cs
- FileRegion.cs
- JournalNavigationScope.cs
- SqlClientWrapperSmiStreamChars.cs
- ObsoleteAttribute.cs
- FieldReference.cs
- SelectionHighlightInfo.cs
- IRCollection.cs
- EventPrivateKey.cs
- DesignerValidatorAdapter.cs
- CatalogPartChrome.cs
- PrintController.cs
- Semaphore.cs
- SourceSwitch.cs
- TypeSystemProvider.cs
- SetStateEventArgs.cs
- Attributes.cs
- GridViewHeaderRowPresenter.cs
- SnapLine.cs
- SpellerInterop.cs
- SafeCloseHandleCritical.cs
- PageCatalogPart.cs
- oledbmetadatacolumnnames.cs
- FileUtil.cs
- SystemInformation.cs
- NavigationFailedEventArgs.cs
- XmlSchemaInclude.cs
- EventMappingSettingsCollection.cs
- ApplicationException.cs
- TimerElapsedEvenArgs.cs
- LongTypeConverter.cs
- Material.cs
- TextParagraphView.cs
- OrderedEnumerableRowCollection.cs
- FlowchartSizeFeature.cs
- XPathSelfQuery.cs
- DirectionalLight.cs
- EmptyStringExpandableObjectConverter.cs
- XsdDataContractImporter.cs
- SByteConverter.cs
- TypeInitializationException.cs
- UInt32.cs
- InputScopeManager.cs
- ConvertEvent.cs
- QuaternionConverter.cs
- PasswordBoxAutomationPeer.cs
- AccessibleObject.cs
- CssTextWriter.cs
- messageonlyhwndwrapper.cs
- PropertyEntry.cs
- TimeoutException.cs
- CompoundFileReference.cs
- CrossContextChannel.cs
- LinkClickEvent.cs
- OrthographicCamera.cs
- TextServicesManager.cs
- SplitterCancelEvent.cs
- TextTreeTextBlock.cs
- InteropBitmapSource.cs
- SerializableReadOnlyDictionary.cs
- CorrelationResolver.cs
- DirectoryGroupQuery.cs
- StylusPlugInCollection.cs
- GetWinFXPath.cs
- BindStream.cs
- SynchronizationLockException.cs
- OleDbSchemaGuid.cs
- XPathMessageFilterElement.cs
- XmlUtil.cs
- ColorConvertedBitmap.cs
- KoreanCalendar.cs
- ValidationError.cs
- RenderDataDrawingContext.cs
- LocalizedNameDescriptionPair.cs
- RemoteHelper.cs
- WindowsUpDown.cs
- IERequestCache.cs
- DateTimeOffset.cs
- CookieHandler.cs
- handlecollector.cs