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
- CodeMemberField.cs
- WindowsAuthenticationEventArgs.cs
- ReferenceEqualityComparer.cs
- SHA384CryptoServiceProvider.cs
- TableColumnCollection.cs
- ProjectedSlot.cs
- BidOverLoads.cs
- TemplateKey.cs
- FormViewPagerRow.cs
- ManifestBasedResourceGroveler.cs
- PathSegment.cs
- BackgroundWorker.cs
- EntityProviderFactory.cs
- httpserverutility.cs
- RuleSettings.cs
- EncryptedKey.cs
- DataColumn.cs
- ListBindableAttribute.cs
- AdornerPresentationContext.cs
- Geometry3D.cs
- EntitySetBaseCollection.cs
- DocumentScope.cs
- HttpWebRequestElement.cs
- SupportsEventValidationAttribute.cs
- Form.cs
- SoundPlayerAction.cs
- SizeFConverter.cs
- CompilerResults.cs
- InterleavedZipPartStream.cs
- StartFileNameEditor.cs
- StorageFunctionMapping.cs
- SchemaElementDecl.cs
- XmlHierarchyData.cs
- WebDisplayNameAttribute.cs
- ProfileParameter.cs
- FlowLayout.cs
- ZipIOCentralDirectoryFileHeader.cs
- CollectionContainer.cs
- WebServiceTypeData.cs
- CngAlgorithmGroup.cs
- ByteFacetDescriptionElement.cs
- ComponentDispatcher.cs
- BadImageFormatException.cs
- CommandExpr.cs
- OperationCanceledException.cs
- XPathScanner.cs
- CounterCreationDataCollection.cs
- MetadataWorkspace.cs
- CodePageUtils.cs
- RenderDataDrawingContext.cs
- EditorPartChrome.cs
- Guid.cs
- DirectoryGroupQuery.cs
- Span.cs
- PropertyKey.cs
- SqlTypeSystemProvider.cs
- ServiceBusyException.cs
- ExpressionDumper.cs
- EmptyEnumerable.cs
- ConfigurationLocation.cs
- TypeConverterValueSerializer.cs
- ClickablePoint.cs
- DocumentDesigner.cs
- BaseDataList.cs
- ClientTargetSection.cs
- DayRenderEvent.cs
- DelimitedListTraceListener.cs
- WindowsAuthenticationModule.cs
- XmlDataProvider.cs
- GcSettings.cs
- ToolStripRenderEventArgs.cs
- DesignerVerbCollection.cs
- AuthorizationRule.cs
- DispatcherTimer.cs
- ReadingWritingEntityEventArgs.cs
- GeometryHitTestResult.cs
- SplitterCancelEvent.cs
- initElementDictionary.cs
- SoapAttributes.cs
- SiteMap.cs
- ModifierKeysValueSerializer.cs
- TiffBitmapDecoder.cs
- LockRecursionException.cs
- WindowsFormsEditorServiceHelper.cs
- PrinterResolution.cs
- InstanceKey.cs
- arclist.cs
- RowUpdatingEventArgs.cs
- _SpnDictionary.cs
- EntityDataSourceViewSchema.cs
- SystemDropShadowChrome.cs
- PropertyDescriptorComparer.cs
- DelegatingConfigHost.cs
- TerminatorSinks.cs
- SiteMapNode.cs
- TrackingStringDictionary.cs
- NativeMethods.cs
- LinkLabel.cs
- XmlName.cs
- XmlBinaryReader.cs