Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / wpf / src / Framework / System / Windows / DescendentsWalkerBase.cs / 1 / 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. 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
- Console.cs
- CommandDevice.cs
- ImageCollectionCodeDomSerializer.cs
- BamlRecords.cs
- XsltSettings.cs
- X509Certificate.cs
- GenericTypeParameterBuilder.cs
- XomlDesignerLoader.cs
- ColumnReorderedEventArgs.cs
- ConditionCollection.cs
- documentsequencetextpointer.cs
- HostProtectionException.cs
- PropertyCondition.cs
- OperationAbortedException.cs
- EncodingDataItem.cs
- InputLanguageSource.cs
- TypedDatasetGenerator.cs
- DataBindingExpressionBuilder.cs
- SystemDiagnosticsSection.cs
- Mutex.cs
- RadialGradientBrush.cs
- PersonalizableTypeEntry.cs
- DetailsViewUpdateEventArgs.cs
- ServerIdentity.cs
- DataTemplateKey.cs
- ScrollBar.cs
- StaticTextPointer.cs
- EastAsianLunisolarCalendar.cs
- ComponentConverter.cs
- DependencySource.cs
- AttributeProviderAttribute.cs
- PropertyGridCommands.cs
- PropertyPushdownHelper.cs
- ImageSourceValueSerializer.cs
- MatrixAnimationBase.cs
- Mutex.cs
- OverflowException.cs
- VersionPair.cs
- PathTooLongException.cs
- ApplicationDirectoryMembershipCondition.cs
- XmlLanguage.cs
- AudioStateChangedEventArgs.cs
- HtmlInputButton.cs
- CustomLineCap.cs
- StrokeSerializer.cs
- _OverlappedAsyncResult.cs
- UnorderedHashRepartitionStream.cs
- NameValueSectionHandler.cs
- SyntaxCheck.cs
- TabletCollection.cs
- InputBinding.cs
- HttpApplication.cs
- Calendar.cs
- DynamicValidatorEventArgs.cs
- TemplateKey.cs
- WindowsTitleBar.cs
- BevelBitmapEffect.cs
- MessageSecurityProtocol.cs
- Exceptions.cs
- FormViewPageEventArgs.cs
- AnnouncementSendsAsyncResult.cs
- ProfilePropertyNameValidator.cs
- DoubleCollection.cs
- LocationSectionRecord.cs
- WebHeaderCollection.cs
- ExtenderControl.cs
- PrintPreviewControl.cs
- ServiceModelActivity.cs
- DocumentPageViewAutomationPeer.cs
- AppearanceEditorPart.cs
- XmlBoundElement.cs
- LinqToSqlWrapper.cs
- Fonts.cs
- HandlerFactoryCache.cs
- PackageDigitalSignature.cs
- SerializerProvider.cs
- WebPartVerb.cs
- cookieexception.cs
- Int32CAMarshaler.cs
- FullTextLine.cs
- AlignmentYValidation.cs
- BufferedWebEventProvider.cs
- ToolStripContainerDesigner.cs
- DBCommand.cs
- ClonableStack.cs
- Triplet.cs
- GenericPrincipal.cs
- XmlReturnReader.cs
- KeyFrames.cs
- ToolboxSnapDragDropEventArgs.cs
- _ProxyChain.cs
- OleCmdHelper.cs
- Perspective.cs
- ZoneMembershipCondition.cs
- XmlDataCollection.cs
- TypeTypeConverter.cs
- SimpleWebHandlerParser.cs
- SafeCryptContextHandle.cs
- SQLBytes.cs
- StorageFunctionMapping.cs