Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / UIElementHelper.cs / 1305600 / UIElementHelper.cs
using System.Diagnostics; using System.Windows; using System.Windows.Media; using System.Windows.Media.Media3D; using System.Windows.Input; using System.Windows.Automation.Peers; using MS.Internal.PresentationCore; namespace MS.Internal { internal static class UIElementHelper { [FriendAccessAllowed] internal static bool IsHitTestVisible(DependencyObject o) { Debug.Assert(o != null, "UIElementHelper.IsHitTestVisible called with null argument"); UIElement oAsUIElement = o as UIElement; if (oAsUIElement != null) { return oAsUIElement.IsHitTestVisible; } else { return ((UIElement3D)o).IsHitTestVisible; } } [FriendAccessAllowed] internal static bool IsVisible(DependencyObject o) { Debug.Assert(o != null, "UIElementHelper.IsVisible called with null argument"); UIElement oAsUIElement = o as UIElement; if (oAsUIElement != null) { return oAsUIElement.IsVisible; } else { return ((UIElement3D)o).IsVisible; } } [FriendAccessAllowed] internal static DependencyObject PredictFocus(DependencyObject o, FocusNavigationDirection direction) { Debug.Assert(o != null, "UIElementHelper.PredictFocus called with null argument"); UIElement oAsUIElement = o as UIElement; if (oAsUIElement != null) { return oAsUIElement.PredictFocus(direction); } else { return ((UIElement3D)o).PredictFocus(direction); } } [FriendAccessAllowed] internal static UIElement GetContainingUIElement2D(DependencyObject reference) { UIElement element = null; while (reference != null) { element = reference as UIElement; if (element != null) break; reference = VisualTreeHelper.GetParent(reference); } return element; } [FriendAccessAllowed] internal static DependencyObject GetUIParent(DependencyObject child) { DependencyObject parent = GetUIParent(child, false); return parent; } [FriendAccessAllowed] internal static DependencyObject GetUIParent(DependencyObject child, bool continuePastVisualTree) { DependencyObject parent = null; DependencyObject myParent = null; // Try to find a UIElement parent in the visual ancestry. if (child is Visual) { myParent = ((Visual)child).InternalVisualParent; } else { myParent = ((Visual3D)child).InternalVisualParent; } parent = InputElement.GetContainingUIElement(myParent) as DependencyObject; // If there was no UIElement parent in the visual ancestry, // check along the logical branch. if(parent == null && continuePastVisualTree) { UIElement childAsUIElement = child as UIElement; if (childAsUIElement != null) { parent = InputElement.GetContainingInputElement(childAsUIElement.GetUIParentCore()) as DependencyObject; } else { UIElement3D childAsUIElement3D = child as UIElement3D; if (childAsUIElement3D != null) { parent = InputElement.GetContainingInputElement(childAsUIElement3D.GetUIParentCore()) as DependencyObject; } } } return parent; } [FriendAccessAllowed] internal static bool IsUIElementOrUIElement3D(DependencyObject o) { return (o is UIElement || o is UIElement3D); } [FriendAccessAllowed] internal static bool InvalidateAutomationAncestors(DependencyObject o) { if (o == null) return false; AutomationPeer ap = null; UIElement e = o as UIElement; if (e != null) { if (e.HasAutomationPeer == true) ap = e.GetAutomationPeer(); } else { ContentElement ce = o as ContentElement; if (ce != null) { if (ce.HasAutomationPeer == true) ap = ce.GetAutomationPeer(); } else { UIElement3D e3d = o as UIElement3D; if (e3d != null) { if (e3d.HasAutomationPeer == true) ap = e3d.GetAutomationPeer(); } } } if (ap != null) { ap.InvalidateAncestorsRecursive(); // Check for parent being non-null while stopping as we don't want to stop in between due to peers not connected to AT // those peers sometimes gets created to serve for various patterns. // e.g: ScrollViewAutomationPeer for Scroll Pattern in case of ListBox. if (ap.GetParent() != null) return true; else return false; } // Propagate the value through parent peers in both logical & visual parent chain, // because automation tree contains peers corresponding to subset of the elements from both the trees. DependencyObject coreParent = DeferredElementTreeState.GetInputElementParent(o, null); DependencyObject logicalParent = DeferredElementTreeState.GetLogicalParent(o, null); if (coreParent != null) { if (InvalidateAutomationAncestors(coreParent)) return true; } if (logicalParent != null && logicalParent != coreParent) { if (InvalidateAutomationAncestors(logicalParent)) return true; } return false; } } } // 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
- ReadOnlyDataSourceView.cs
- Statements.cs
- XmlSchemaSimpleContentExtension.cs
- WebPartsPersonalizationAuthorization.cs
- SimpleLine.cs
- X509Extension.cs
- MultiTrigger.cs
- SiteMapNode.cs
- AgileSafeNativeMemoryHandle.cs
- FlowDocumentPage.cs
- PublishLicense.cs
- DropShadowEffect.cs
- Metadata.cs
- PathSegment.cs
- EventHandlingScope.cs
- ObjectFullSpanRewriter.cs
- XmlUtil.cs
- SingleObjectCollection.cs
- CodeDomDesignerLoader.cs
- GeneralTransformGroup.cs
- KnownBoxes.cs
- CalendarAutoFormat.cs
- RsaKeyGen.cs
- SplitContainer.cs
- SQLDecimalStorage.cs
- StringUtil.cs
- TypeForwardedToAttribute.cs
- SettingsAttributes.cs
- AutomationAttributeInfo.cs
- SecurityKeyUsage.cs
- XmlQueryCardinality.cs
- RTTypeWrapper.cs
- X509Utils.cs
- ZipIOExtraFieldElement.cs
- XmlCharCheckingReader.cs
- TreeViewTemplateSelector.cs
- CompilerResults.cs
- RowSpanVector.cs
- DataGridViewColumnDesigner.cs
- VBIdentifierName.cs
- HMACSHA256.cs
- ParenthesizePropertyNameAttribute.cs
- XmlQueryTypeFactory.cs
- DataObjectMethodAttribute.cs
- SoapElementAttribute.cs
- ISAPIRuntime.cs
- EventLogEntryCollection.cs
- SelectionWordBreaker.cs
- OrderedDictionary.cs
- RelationshipConverter.cs
- ReferencedType.cs
- MsmqPoisonMessageException.cs
- HttpDigestClientElement.cs
- MiniAssembly.cs
- PropertyDescriptorGridEntry.cs
- WebProxyScriptElement.cs
- WrappedReader.cs
- HGlobalSafeHandle.cs
- QfeChecker.cs
- NeutralResourcesLanguageAttribute.cs
- Paragraph.cs
- EqualityComparer.cs
- WindowsTokenRoleProvider.cs
- ZipIORawDataFileBlock.cs
- HtmlTitle.cs
- _Semaphore.cs
- Internal.cs
- PointLight.cs
- AttributeUsageAttribute.cs
- HostedTransportConfigurationBase.cs
- MsmqIntegrationInputChannel.cs
- ManagedFilter.cs
- HtmlAnchor.cs
- TextRangeEditLists.cs
- SchemaCreator.cs
- SourceCollection.cs
- ObjectQueryState.cs
- DataGridViewMethods.cs
- LayoutEditorPart.cs
- ObjectSet.cs
- ItemsPanelTemplate.cs
- MyContact.cs
- RetrieveVirtualItemEventArgs.cs
- IItemContainerGenerator.cs
- EntryWrittenEventArgs.cs
- SmtpNegotiateAuthenticationModule.cs
- TraceXPathNavigator.cs
- RoleManagerModule.cs
- DataGridLengthConverter.cs
- SetStoryboardSpeedRatio.cs
- BitmapVisualManager.cs
- X509Utils.cs
- BoundColumn.cs
- Graphics.cs
- BamlResourceSerializer.cs
- ObjectPersistData.cs
- SQLString.cs
- ComboBox.cs
- DataControlFieldHeaderCell.cs
- ControlCachePolicy.cs