Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Framework / System / Windows / DescendentsWalkerBase.cs / 1305600 / 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; } /// /// 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; } /// /// 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
- AutoGeneratedFieldProperties.cs
- FactoryId.cs
- DrawingVisualDrawingContext.cs
- CustomAttributeBuilder.cs
- OleDbError.cs
- XMLUtil.cs
- InsufficientMemoryException.cs
- HttpModulesSection.cs
- ReadContentAsBinaryHelper.cs
- DbProviderFactories.cs
- DesignerAttributeInfo.cs
- XmlSignificantWhitespace.cs
- SessionIDManager.cs
- UrlParameterReader.cs
- ControlType.cs
- WebPartManagerInternals.cs
- StringUtil.cs
- CompositeScriptReferenceEventArgs.cs
- DataSourceHelper.cs
- returneventsaver.cs
- Misc.cs
- DataGridViewCellValueEventArgs.cs
- ImageList.cs
- RemoteArgument.cs
- XmlSchemaExporter.cs
- FilteredReadOnlyMetadataCollection.cs
- WindowsScrollBarBits.cs
- CqlErrorHelper.cs
- GridEntryCollection.cs
- NativeMethodsCLR.cs
- XamlPathDataSerializer.cs
- SrgsElementFactoryCompiler.cs
- SortExpressionBuilder.cs
- SHA384.cs
- AncillaryOps.cs
- WindowsComboBox.cs
- Logging.cs
- ToolStripOverflow.cs
- SqlDataReader.cs
- AssemblyResourceLoader.cs
- TextBox.cs
- AsymmetricSignatureFormatter.cs
- ComboBoxItem.cs
- CommentAction.cs
- TraceInternal.cs
- UserPreferenceChangedEventArgs.cs
- HitTestParameters.cs
- SmiMetaData.cs
- ValidationPropertyAttribute.cs
- PointAnimation.cs
- PrintControllerWithStatusDialog.cs
- XmlAnyAttributeAttribute.cs
- ApplicationHost.cs
- BindingWorker.cs
- XmlSchemaIdentityConstraint.cs
- OdbcDataReader.cs
- EllipseGeometry.cs
- FrameworkContentElement.cs
- VectorCollectionValueSerializer.cs
- StreamInfo.cs
- DtdParser.cs
- FeatureSupport.cs
- ServiceDebugElement.cs
- HelpKeywordAttribute.cs
- CodePageEncoding.cs
- SafeMILHandle.cs
- OlePropertyStructs.cs
- ArithmeticException.cs
- OperationDescriptionCollection.cs
- FontStretch.cs
- Sequence.cs
- EntityTransaction.cs
- SplitterPanel.cs
- DataGridViewRowStateChangedEventArgs.cs
- TemplatedMailWebEventProvider.cs
- VirtualPathProvider.cs
- ContentHostHelper.cs
- SpanIndex.cs
- BlurEffect.cs
- BaseTemplateParser.cs
- ModifierKeysValueSerializer.cs
- XmlWriterDelegator.cs
- Query.cs
- ParserStreamGeometryContext.cs
- Type.cs
- NamedPermissionSet.cs
- ExpressionVisitor.cs
- DockingAttribute.cs
- MeshGeometry3D.cs
- DbParameterHelper.cs
- AliasGenerator.cs
- ExpanderAutomationPeer.cs
- ToolboxComponentsCreatingEventArgs.cs
- HostedNamedPipeTransportManager.cs
- XmlSchemaCollection.cs
- BinaryFormatter.cs
- selecteditemcollection.cs
- SQLStringStorage.cs
- FrameworkTextComposition.cs
- AmbientLight.cs