Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / 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
- StatusBarItem.cs
- DbProviderConfigurationHandler.cs
- Messages.cs
- Frame.cs
- SmtpTransport.cs
- CheckBoxPopupAdapter.cs
- DataGridViewRowHeaderCell.cs
- PaintEvent.cs
- WindowsFormsHost.cs
- HttpApplication.cs
- TextTreeFixupNode.cs
- ProjectionPathSegment.cs
- CollaborationHelperFunctions.cs
- WebColorConverter.cs
- CopyNodeSetAction.cs
- CompModSwitches.cs
- ReturnEventArgs.cs
- ErrorView.xaml.cs
- Schema.cs
- List.cs
- ImageButton.cs
- TextStore.cs
- PersonalizableTypeEntry.cs
- BooleanKeyFrameCollection.cs
- TemplateKeyConverter.cs
- typedescriptorpermission.cs
- DataExpression.cs
- DeviceContexts.cs
- XmlSchemaException.cs
- ListDictionaryInternal.cs
- StringBuilder.cs
- AdornerPresentationContext.cs
- WebPartManager.cs
- SqlDataSourceSummaryPanel.cs
- DataGridViewTopRowAccessibleObject.cs
- AssemblyResourceLoader.cs
- CodeDomConfigurationHandler.cs
- MonitorWrapper.cs
- ToolboxItemImageConverter.cs
- TextControl.cs
- ToolStripPanel.cs
- TypeConverter.cs
- ReadOnlyMetadataCollection.cs
- LoadRetryAsyncResult.cs
- Soap12ServerProtocol.cs
- SchemaImporterExtension.cs
- HtmlInputHidden.cs
- DataGridSortCommandEventArgs.cs
- NullPackagingPolicy.cs
- RectangleF.cs
- MarshalByRefObject.cs
- FacetValues.cs
- AttributeConverter.cs
- ContentHostHelper.cs
- RegexWorker.cs
- QueryResponse.cs
- IsolatedStorageException.cs
- DbInsertCommandTree.cs
- DataGridSortCommandEventArgs.cs
- ResourcePart.cs
- ProbeDuplexCD1AsyncResult.cs
- NetMsmqBindingElement.cs
- ParseHttpDate.cs
- __Error.cs
- TaskScheduler.cs
- StrokeCollection2.cs
- ExpandedWrapper.cs
- StructuredTypeEmitter.cs
- XmlMapping.cs
- LoginCancelEventArgs.cs
- WebScriptEnablingBehavior.cs
- XPathEmptyIterator.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- WebPartCloseVerb.cs
- DerivedKeySecurityTokenStub.cs
- UIElementCollection.cs
- NavigationCommands.cs
- TagMapCollection.cs
- HostDesigntimeLicenseContext.cs
- CodeDefaultValueExpression.cs
- DataGridViewColumnCollection.cs
- StreamHelper.cs
- QilTargetType.cs
- TemplateBamlTreeBuilder.cs
- Single.cs
- ConfigurationValidatorBase.cs
- BuiltInExpr.cs
- UrlRoutingModule.cs
- RequestCacheValidator.cs
- TypeConverterBase.cs
- TransactionContextValidator.cs
- ZeroOpNode.cs
- ControlEvent.cs
- DataGridComboBoxColumn.cs
- OverrideMode.cs
- DataRelationPropertyDescriptor.cs
- ColumnResult.cs
- Pens.cs
- AuthorizationRule.cs
- SocketException.cs