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
- RoleManagerEventArgs.cs
- UdpDiscoveryEndpointElement.cs
- XmlAnyElementAttributes.cs
- panel.cs
- QuotedPrintableStream.cs
- hebrewshape.cs
- AddIn.cs
- DrawingAttributeSerializer.cs
- MonitorWrapper.cs
- ResolveDuplexAsyncResult.cs
- ListSortDescription.cs
- VirtualDirectoryMappingCollection.cs
- ParagraphVisual.cs
- MSAAWinEventWrap.cs
- XamlSerializationHelper.cs
- HtmlButton.cs
- CrossSiteScriptingValidation.cs
- AttributeQuery.cs
- GroupQuery.cs
- RightNameExpirationInfoPair.cs
- Positioning.cs
- ComponentEditorForm.cs
- StrokeCollectionDefaultValueFactory.cs
- WorkflowIdleBehavior.cs
- validationstate.cs
- TextEditorParagraphs.cs
- Vector3DKeyFrameCollection.cs
- WinEventWrap.cs
- NumberFunctions.cs
- HandleCollector.cs
- HorizontalAlignConverter.cs
- ItemDragEvent.cs
- AggregateException.cs
- XmlDataLoader.cs
- XappLauncher.cs
- TableItemStyle.cs
- ByteRangeDownloader.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- DelegateBodyWriter.cs
- ValueTable.cs
- DesignerValidatorAdapter.cs
- MaskedTextProvider.cs
- ConnectionStringsExpressionBuilder.cs
- XPathScanner.cs
- DrawingCollection.cs
- ParameterExpression.cs
- SessionEndingEventArgs.cs
- OutputCacheProfileCollection.cs
- KnownBoxes.cs
- TransactionScope.cs
- SendKeys.cs
- WebSysDescriptionAttribute.cs
- CodeSnippetCompileUnit.cs
- SqlVisitor.cs
- MatchingStyle.cs
- TagPrefixInfo.cs
- UxThemeWrapper.cs
- HMACSHA256.cs
- SelectionProcessor.cs
- Zone.cs
- PointAnimation.cs
- ActivityExecutor.cs
- DbProviderSpecificTypePropertyAttribute.cs
- UnmanagedMemoryStreamWrapper.cs
- StrongNameKeyPair.cs
- SortedDictionary.cs
- Serializer.cs
- OleDbCommand.cs
- UnsafeNativeMethods.cs
- regiisutil.cs
- WebPartConnectionsCancelEventArgs.cs
- SRGSCompiler.cs
- BasicCellRelation.cs
- XpsSerializerWriter.cs
- Assert.cs
- MimeWriter.cs
- Token.cs
- TextWriter.cs
- TextTreeInsertElementUndoUnit.cs
- GeneralTransform2DTo3D.cs
- XamlFigureLengthSerializer.cs
- AnnotationStore.cs
- QilDataSource.cs
- SerializableTypeCodeDomSerializer.cs
- OleServicesContext.cs
- StylusPlugInCollection.cs
- DateTimeOffset.cs
- SettingsPropertyIsReadOnlyException.cs
- _SpnDictionary.cs
- XPathNavigatorKeyComparer.cs
- StackSpiller.Bindings.cs
- ConfigXmlReader.cs
- CommandHelpers.cs
- RC2CryptoServiceProvider.cs
- TrackBarRenderer.cs
- TypeForwardedFromAttribute.cs
- BamlLocalizationDictionary.cs
- FixedPageStructure.cs
- AdornerHitTestResult.cs
- SqlRowUpdatedEvent.cs