Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / Automation / Peers / StatusBarAutomationPeer.cs / 1305600 / 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
- ResourceDisplayNameAttribute.cs
- IsolationInterop.cs
- RectConverter.cs
- BrowserCapabilitiesFactory.cs
- XsltContext.cs
- ToolStripDropDown.cs
- ImageListStreamer.cs
- ToolStripDropDownItemDesigner.cs
- TableCell.cs
- Border.cs
- InputLanguageCollection.cs
- TrustLevelCollection.cs
- GridViewRowEventArgs.cs
- MultilineStringConverter.cs
- ExplicitDiscriminatorMap.cs
- ImageMetadata.cs
- BitmapEffectInputData.cs
- CodeDomComponentSerializationService.cs
- Stopwatch.cs
- DecimalFormatter.cs
- StyleSheet.cs
- CssStyleCollection.cs
- PropagatorResult.cs
- DbgUtil.cs
- StylusCollection.cs
- TraceHwndHost.cs
- WebPartPersonalization.cs
- BitmapSizeOptions.cs
- XmlDomTextWriter.cs
- FilterQuery.cs
- SimpleHandlerFactory.cs
- AnnotationResource.cs
- InfoCardRSACryptoProvider.cs
- Exceptions.cs
- IResourceProvider.cs
- XmlSchemaDocumentation.cs
- CallbackDebugBehavior.cs
- BrowserCapabilitiesFactory35.cs
- CustomSignedXml.cs
- SmiGettersStream.cs
- DictionaryItemsCollection.cs
- WebControlsSection.cs
- FormViewInsertEventArgs.cs
- LingerOption.cs
- ListChangedEventArgs.cs
- TreeNodeStyle.cs
- dataprotectionpermission.cs
- DataGridViewImageColumn.cs
- GlyphInfoList.cs
- PropertyGeneratedEventArgs.cs
- BaseProcessor.cs
- OpenTypeLayout.cs
- IdentitySection.cs
- PartialCachingAttribute.cs
- Decorator.cs
- ConstructorNeedsTagAttribute.cs
- EncoderParameters.cs
- ScriptingProfileServiceSection.cs
- FormsAuthenticationModule.cs
- BindUriHelper.cs
- WmlLiteralTextAdapter.cs
- Rectangle.cs
- FormsAuthenticationCredentials.cs
- DeviceFilterDictionary.cs
- ToolStripPanelRow.cs
- AssemblyBuilder.cs
- ForwardPositionQuery.cs
- ApplicationInfo.cs
- EntityDataReader.cs
- BinaryParser.cs
- Listbox.cs
- TagPrefixCollection.cs
- SizeConverter.cs
- ConnectionPoint.cs
- RestClientProxyHandler.cs
- DataGridCell.cs
- IdleTimeoutMonitor.cs
- DocumentApplicationState.cs
- ApplicationServiceHelper.cs
- TimeSpanMinutesConverter.cs
- SmtpNetworkElement.cs
- BitmapSourceSafeMILHandle.cs
- LicFileLicenseProvider.cs
- EntityClientCacheKey.cs
- _AuthenticationState.cs
- HwndKeyboardInputProvider.cs
- Transform.cs
- Scripts.cs
- ObjectStateFormatter.cs
- DetailsViewPageEventArgs.cs
- DataGridViewColumnCollectionEditor.cs
- BitVec.cs
- StylusCollection.cs
- VisualStyleElement.cs
- smtpconnection.cs
- COM2PropertyDescriptor.cs
- wgx_render.cs
- iisPickupDirectory.cs
- HttpClientCertificate.cs
- TemplatedWizardStep.cs