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
- CultureInfoConverter.cs
- UIElementParagraph.cs
- Utils.cs
- TargetInvocationException.cs
- DataGridViewAutoSizeColumnModeEventArgs.cs
- HttpWebRequestElement.cs
- SupportsEventValidationAttribute.cs
- XmlSchemaAppInfo.cs
- HGlobalSafeHandle.cs
- SchemaManager.cs
- AutomationPropertyInfo.cs
- AuthorizationRule.cs
- XPathLexer.cs
- SystemIPInterfaceProperties.cs
- AuthenticationService.cs
- ProcessRequestArgs.cs
- XmlIterators.cs
- TypeInitializationException.cs
- TemplateInstanceAttribute.cs
- HtmlContainerControl.cs
- OracleBoolean.cs
- SplitterEvent.cs
- TargetConverter.cs
- BinarySerializer.cs
- ComponentCommands.cs
- IncrementalCompileAnalyzer.cs
- ReferencedType.cs
- GlyphRunDrawing.cs
- DiscoveryClientDocuments.cs
- InvalidComObjectException.cs
- SecurityState.cs
- Hex.cs
- LogConverter.cs
- ResXBuildProvider.cs
- DataServiceExpressionVisitor.cs
- NativeMethods.cs
- CollectionsUtil.cs
- ResXResourceWriter.cs
- XslNumber.cs
- ChineseLunisolarCalendar.cs
- QilChoice.cs
- DelegatingStream.cs
- HyperLinkColumn.cs
- AmbiguousMatchException.cs
- OutputCacheSettings.cs
- PersonalizableTypeEntry.cs
- DataControlField.cs
- DataTablePropertyDescriptor.cs
- DependencyPropertyKind.cs
- SchemaManager.cs
- SerializationHelper.cs
- SystemPens.cs
- XmlNavigatorFilter.cs
- PointLight.cs
- ServiceHttpHandlerFactory.cs
- DescendantBaseQuery.cs
- VirtualDirectoryMappingCollection.cs
- MetadataWorkspace.cs
- MailWriter.cs
- FormViewDeleteEventArgs.cs
- ListViewItemCollectionEditor.cs
- ObjectTypeMapping.cs
- PagesSection.cs
- LinqDataView.cs
- NonDualMessageSecurityOverHttp.cs
- HtmlAnchor.cs
- DifferencingCollection.cs
- WindowsGraphics2.cs
- ScaleTransform3D.cs
- COM2PictureConverter.cs
- HashSet.cs
- ManipulationLogic.cs
- Evidence.cs
- ApplicationFileCodeDomTreeGenerator.cs
- UserValidatedEventArgs.cs
- CodeSnippetExpression.cs
- Compilation.cs
- SEHException.cs
- CurrentChangingEventArgs.cs
- DateTimePicker.cs
- LayoutManager.cs
- FigureParagraph.cs
- StylusPointProperties.cs
- PartialTrustHelpers.cs
- SmtpFailedRecipientException.cs
- ObjectQuery.cs
- EditorPartChrome.cs
- SrgsElementFactoryCompiler.cs
- MappingModelBuildProvider.cs
- CodeNamespaceImportCollection.cs
- DropShadowBitmapEffect.cs
- LOSFormatter.cs
- FragmentNavigationEventArgs.cs
- ObjectDataSource.cs
- FullTrustAssemblyCollection.cs
- ControlCollection.cs
- SolidBrush.cs
- ICollection.cs
- Typeface.cs
- MdiWindowListStrip.cs