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
- OrderedDictionary.cs
- DecimalAnimationBase.cs
- ClaimTypeElement.cs
- QuaternionAnimationUsingKeyFrames.cs
- CompressedStack.cs
- CanonicalXml.cs
- SafeLibraryHandle.cs
- _UncName.cs
- SQLBinaryStorage.cs
- MultiSelectRootGridEntry.cs
- _NegoState.cs
- TemplatePagerField.cs
- DependencyPropertyAttribute.cs
- BrushConverter.cs
- Window.cs
- QueryInterceptorAttribute.cs
- ZipArchive.cs
- ComboBox.cs
- HeaderedItemsControl.cs
- SpeakCompletedEventArgs.cs
- DependencyPropertyConverter.cs
- WindowsImpersonationContext.cs
- DataReceivedEventArgs.cs
- StyleCollectionEditor.cs
- XPathNodePointer.cs
- VoiceObjectToken.cs
- Validator.cs
- CompilationLock.cs
- LayoutEvent.cs
- CorrelationManager.cs
- CachingHintValidation.cs
- FontStyle.cs
- DesignerForm.cs
- FixedPageAutomationPeer.cs
- ContextDataSourceContextData.cs
- ClientScriptItemCollection.cs
- WrappedDispatcherException.cs
- EntityDataSourceWizardForm.cs
- CatalogZoneBase.cs
- DoubleAnimationBase.cs
- OdbcConnectionPoolProviderInfo.cs
- TableLayoutColumnStyleCollection.cs
- HealthMonitoringSectionHelper.cs
- Directory.cs
- HandlerFactoryCache.cs
- PropertyManager.cs
- CoreSwitches.cs
- MultilineStringConverter.cs
- AutomationPeer.cs
- EntityStoreSchemaFilterEntry.cs
- AssemblyAttributes.cs
- TypeExtensionConverter.cs
- FrameworkRichTextComposition.cs
- COM2ColorConverter.cs
- SerializableTypeCodeDomSerializer.cs
- MenuStrip.cs
- ArgumentDirectionHelper.cs
- DirectoryGroupQuery.cs
- BinaryUtilClasses.cs
- XAMLParseException.cs
- WebPartEditorApplyVerb.cs
- Message.cs
- RangeValidator.cs
- WebScriptServiceHost.cs
- TaskFileService.cs
- WebPartUserCapability.cs
- ParseNumbers.cs
- ObjectStateFormatter.cs
- XamlWriterExtensions.cs
- XmlWriterTraceListener.cs
- AttributeSetAction.cs
- StringToken.cs
- ResourceReferenceKeyNotFoundException.cs
- Axis.cs
- BroadcastEventHelper.cs
- Trace.cs
- SqlDelegatedTransaction.cs
- NestedContainer.cs
- CachedBitmap.cs
- TabletDevice.cs
- OleServicesContext.cs
- PageAdapter.cs
- StorageEntityTypeMapping.cs
- WebPartTransformerAttribute.cs
- ExtendedProperty.cs
- CodeVariableReferenceExpression.cs
- TextTreeInsertUndoUnit.cs
- XmlExpressionDumper.cs
- Operand.cs
- TransmissionStrategy.cs
- DesignerVerbCollection.cs
- NativeMethods.cs
- ListViewEditEventArgs.cs
- EventLogPermission.cs
- HttpChannelHelpers.cs
- AutomationPatternInfo.cs
- HtmlTable.cs
- BaseCodeDomTreeGenerator.cs
- PropertyOrder.cs
- SqlCacheDependencyDatabase.cs