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
- ArgumentsParser.cs
- SelectorItemAutomationPeer.cs
- SqlFunctionAttribute.cs
- MetadataHelper.cs
- FileLevelControlBuilderAttribute.cs
- PlainXmlDeserializer.cs
- InvokeHandlers.cs
- _AuthenticationState.cs
- COM2PropertyPageUITypeConverter.cs
- XmlMtomWriter.cs
- Attributes.cs
- IPCCacheManager.cs
- TablePattern.cs
- BamlTreeUpdater.cs
- PropertyToken.cs
- Animatable.cs
- XpsFont.cs
- UnsafeNativeMethods.cs
- BevelBitmapEffect.cs
- Overlapped.cs
- IgnoreSection.cs
- SpecularMaterial.cs
- SortableBindingList.cs
- CacheModeConverter.cs
- AffineTransform3D.cs
- ZipIOExtraFieldPaddingElement.cs
- AuthenticationModuleElementCollection.cs
- prefixendpointaddressmessagefilter.cs
- AsymmetricSignatureDeformatter.cs
- WebEventCodes.cs
- WSDualHttpSecurityElement.cs
- TextWriter.cs
- AssertSection.cs
- MenuCommands.cs
- RequestStatusBarUpdateEventArgs.cs
- SQLGuid.cs
- TrackingProvider.cs
- SponsorHelper.cs
- FloaterParagraph.cs
- DataRecordInternal.cs
- EventsTab.cs
- CleanUpVirtualizedItemEventArgs.cs
- DbConnectionPoolGroup.cs
- XmlTextAttribute.cs
- Soap12ProtocolImporter.cs
- DefaultTextStore.cs
- ServicesExceptionNotHandledEventArgs.cs
- BitmapEffectGroup.cs
- IDispatchConstantAttribute.cs
- EventProvider.cs
- DataConnectionHelper.cs
- BoundField.cs
- AssemblyCache.cs
- ToolBarTray.cs
- InvokeBinder.cs
- XmlCustomFormatter.cs
- DataControlFieldsEditor.cs
- brushes.cs
- MemberMaps.cs
- StylusDownEventArgs.cs
- CommandValueSerializer.cs
- SendKeys.cs
- ListenerAdapterBase.cs
- PointKeyFrameCollection.cs
- SecurityValidationBehavior.cs
- OracleCommandSet.cs
- DefaultValueAttribute.cs
- CodeGenHelper.cs
- ColumnCollection.cs
- CorrelationResolver.cs
- DnsPermission.cs
- WebBrowserNavigatedEventHandler.cs
- DatagridviewDisplayedBandsData.cs
- ObjectSet.cs
- MenuStrip.cs
- GlyphCollection.cs
- DbParameterHelper.cs
- DataServiceKeyAttribute.cs
- EnumBuilder.cs
- CachedFontFace.cs
- SqlConnection.cs
- SerialPort.cs
- _SpnDictionary.cs
- DBConnectionString.cs
- Atom10FeedFormatter.cs
- StructuralCache.cs
- ToolStripKeyboardHandlingService.cs
- SplineKeyFrames.cs
- StylusPlugInCollection.cs
- LinkClickEvent.cs
- GradientSpreadMethodValidation.cs
- NameTable.cs
- UpdateCommand.cs
- FontNamesConverter.cs
- DataSetFieldSchema.cs
- UnknownBitmapEncoder.cs
- SqlAliasesReferenced.cs
- ExecutionEngineException.cs
- RowUpdatedEventArgs.cs
- BooleanAnimationBase.cs