Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / DescendentsWalkerBase.cs / 2 / DescendentsWalkerBase.cs
using System; using System.Collections; using System.Diagnostics; using System.Windows; using System.Windows.Media; using MS.Utility; namespace System.Windows { ////// This is a base class to the DescendentsWalker. It is factored out so that /// FrameworkContextData can store and retrieve it from context local storage /// in a type agnostic manner. /// internal class DescendentsWalkerBase { #region Construction protected DescendentsWalkerBase(TreeWalkPriority priority) { _startNode = null; _priority = priority; _recursionDepth = 0; _nodes = new FrugalStructList(); } #endregion Construction internal bool WasVisited(DependencyObject d) { DependencyObject ancestor = d; while ((ancestor != _startNode) && (ancestor != null)) { DependencyObject logicalParent; if (FrameworkElement.DType.IsInstanceOfType(ancestor)) { FrameworkElement fe = ancestor as FrameworkElement; logicalParent = fe.Parent; // FrameworkElement DependencyObject dependencyObjectParent = VisualTreeHelper.GetParent(fe); if (dependencyObjectParent != null && logicalParent != null && dependencyObjectParent != logicalParent) { return _nodes.Contains(ancestor); } // Follow visual tree if not null otherwise we follow logical tree if (dependencyObjectParent != null) { ancestor = dependencyObjectParent; continue; } } else { // FrameworkContentElement FrameworkContentElement ancestorFCE = ancestor as FrameworkContentElement; logicalParent = (ancestorFCE != null) ? ancestorFCE.Parent : null; } ancestor = logicalParent; } return (ancestor != null); } internal DependencyObject _startNode; internal TreeWalkPriority _priority; internal FrugalStructList _nodes; internal int _recursionDepth; internal const int MAX_TREE_DEPTH = 250; } /// /// Enum specifying whether visual tree needs /// to be travesed first or the logical tree /// internal enum TreeWalkPriority { ////// Traverse Logical Tree first /// LogicalTree, ////// Traverse Visual Tree first /// VisualTree } } // 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
- PreviewPageInfo.cs
- EllipticalNodeOperations.cs
- AuthenticateEventArgs.cs
- EnumBuilder.cs
- XmlReader.cs
- HttpPostLocalhostServerProtocol.cs
- IsolatedStorageException.cs
- SynchronizedPool.cs
- ActivityPreviewDesigner.cs
- AnimationLayer.cs
- DataGridViewAddColumnDialog.cs
- HashSet.cs
- MenuCommands.cs
- GeometryDrawing.cs
- StringOutput.cs
- TableColumnCollectionInternal.cs
- ExtenderProvidedPropertyAttribute.cs
- SystemWebCachingSectionGroup.cs
- _WinHttpWebProxyDataBuilder.cs
- SerializeAbsoluteContext.cs
- HwndSourceParameters.cs
- DataGridLinkButton.cs
- CheckBox.cs
- InternalConfigSettingsFactory.cs
- JsonReaderDelegator.cs
- ConnectionManagementElement.cs
- WorkflowRuntimeServiceElement.cs
- UrlMappingCollection.cs
- HashMembershipCondition.cs
- DbProviderServices.cs
- FlowchartDesigner.xaml.cs
- DataGridViewCellCancelEventArgs.cs
- GridViewRowEventArgs.cs
- DataViewManager.cs
- KeyConverter.cs
- EntityContainerRelationshipSet.cs
- SQLSingleStorage.cs
- BitmapEffectDrawingContextWalker.cs
- UxThemeWrapper.cs
- Transform3DGroup.cs
- CfgParser.cs
- ClosureBinding.cs
- StackSpiller.Temps.cs
- RequestCacheEntry.cs
- ProfilePropertySettings.cs
- Axis.cs
- SeparatorAutomationPeer.cs
- ListItemParagraph.cs
- SelectedPathEditor.cs
- HttpCacheVary.cs
- AttachedAnnotationChangedEventArgs.cs
- ZipIORawDataFileBlock.cs
- Oci.cs
- FormViewCommandEventArgs.cs
- RegexCompiler.cs
- Vertex.cs
- TableItemPattern.cs
- OutputScopeManager.cs
- FilteredXmlReader.cs
- PublisherMembershipCondition.cs
- TcpSocketManager.cs
- ExpressionBuilder.cs
- StylusEventArgs.cs
- ToolStripSeparator.cs
- EncodingTable.cs
- SolidColorBrush.cs
- AutomationElementCollection.cs
- TransformerTypeCollection.cs
- XmlUtil.cs
- XPathAncestorIterator.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- SqlDataSourceWizardForm.cs
- MouseActionConverter.cs
- SortedList.cs
- SplitContainer.cs
- SizeConverter.cs
- ListBoxItemWrapperAutomationPeer.cs
- UpdateRecord.cs
- CacheHelper.cs
- TrackingLocationCollection.cs
- ConfigXmlWhitespace.cs
- XPathAncestorIterator.cs
- PointAnimation.cs
- CapabilitiesRule.cs
- _HelperAsyncResults.cs
- ApplicationId.cs
- Enum.cs
- Resources.Designer.cs
- ValueQuery.cs
- PropertyBuilder.cs
- SystemFonts.cs
- XmlLanguageConverter.cs
- MenuRenderer.cs
- XmlTextReader.cs
- _WinHttpWebProxyDataBuilder.cs
- IImplicitResourceProvider.cs
- AutomationPropertyInfo.cs
- DrawingGroupDrawingContext.cs
- IdnElement.cs
- FontDialog.cs