Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / 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
- SmiEventSink_Default.cs
- InfoCardAsymmetricCrypto.cs
- SplitContainer.cs
- GC.cs
- ValidationSummary.cs
- EntityDataSourceReferenceGroup.cs
- XmlSchemaSimpleContentRestriction.cs
- DSASignatureFormatter.cs
- HoistedLocals.cs
- MessageDescription.cs
- TextRenderer.cs
- SrgsElementFactory.cs
- ResourceExpressionBuilder.cs
- Helpers.cs
- EventData.cs
- PlatformNotSupportedException.cs
- StyleConverter.cs
- XamlSerializerUtil.cs
- CriticalFinalizerObject.cs
- AuthenticationService.cs
- SqlCacheDependencyDatabaseCollection.cs
- LineSegment.cs
- SqlDataSourceFilteringEventArgs.cs
- NodeInfo.cs
- mactripleDES.cs
- SqlTypeSystemProvider.cs
- RetrieveVirtualItemEventArgs.cs
- TypographyProperties.cs
- InputScope.cs
- SQLStringStorage.cs
- SqlGatherProducedAliases.cs
- DispatcherEventArgs.cs
- ListCollectionView.cs
- HierarchicalDataBoundControl.cs
- _NetworkingPerfCounters.cs
- XPathNodePointer.cs
- TemplateBindingExpressionConverter.cs
- PersistChildrenAttribute.cs
- DropShadowBitmapEffect.cs
- HideDisabledControlAdapter.cs
- ContactManager.cs
- TypeViewSchema.cs
- DoubleCollectionConverter.cs
- PreviewPrintController.cs
- CqlLexerHelpers.cs
- AlphabeticalEnumConverter.cs
- OdbcPermission.cs
- DataList.cs
- ContentElement.cs
- SystemIcons.cs
- CodeMemberMethod.cs
- ValidatingReaderNodeData.cs
- CommandSet.cs
- HttpInputStream.cs
- ImagingCache.cs
- TouchesOverProperty.cs
- HttpWebRequest.cs
- DataGridViewCellLinkedList.cs
- ConfigUtil.cs
- XPathParser.cs
- MaskDesignerDialog.cs
- CodeTypeDeclaration.cs
- FormViewPageEventArgs.cs
- DetailsViewDeleteEventArgs.cs
- XmlSchemaSimpleTypeList.cs
- ErrorStyle.cs
- ToolStripLocationCancelEventArgs.cs
- Clock.cs
- FixedHyperLink.cs
- StructuredType.cs
- RunInstallerAttribute.cs
- TextProperties.cs
- ObjectListShowCommandsEventArgs.cs
- PrinterUnitConvert.cs
- PersonalizationDictionary.cs
- ServiceModelConfigurationSection.cs
- Clause.cs
- SelectedGridItemChangedEvent.cs
- SignatureToken.cs
- PreviewPrintController.cs
- TargetException.cs
- DropShadowEffect.cs
- Error.cs
- GraphicsState.cs
- ScriptingAuthenticationServiceSection.cs
- HitTestParameters3D.cs
- URLEditor.cs
- DataContractSerializerSection.cs
- Button.cs
- MediaScriptCommandRoutedEventArgs.cs
- Inflater.cs
- ObjectView.cs
- SafeFileMappingHandle.cs
- ExitEventArgs.cs
- ServiceContractListItemList.cs
- FormView.cs
- UriScheme.cs
- Vector3D.cs
- ImpersonateTokenRef.cs
- InvalidCastException.cs