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
- InstanceHandleReference.cs
- DecimalAverageAggregationOperator.cs
- CachedPathData.cs
- DecimalFormatter.cs
- TraceInternal.cs
- Monitor.cs
- ToolStripDropDownItem.cs
- PersonalizableTypeEntry.cs
- SqlConnectionHelper.cs
- ContextItem.cs
- PopupRootAutomationPeer.cs
- UserValidatedEventArgs.cs
- SelectedDatesCollection.cs
- TrackingStringDictionary.cs
- XmlUtf8RawTextWriter.cs
- JsonGlobals.cs
- DBSchemaRow.cs
- _Rfc2616CacheValidators.cs
- ListenerConnectionDemuxer.cs
- ScriptControlDescriptor.cs
- SmtpSection.cs
- BaseTreeIterator.cs
- TriggerCollection.cs
- LogEntryUtils.cs
- SoapHeaders.cs
- StringResourceManager.cs
- SizeAnimationBase.cs
- SafeCryptContextHandle.cs
- ToolBarDesigner.cs
- StorageEntityContainerMapping.cs
- TransformGroup.cs
- BitSet.cs
- DebugView.cs
- ButtonBaseAutomationPeer.cs
- ClientSession.cs
- MissingSatelliteAssemblyException.cs
- OleDbStruct.cs
- TextDecorationUnitValidation.cs
- CodeActivityContext.cs
- PlaceHolder.cs
- PropertyDescriptorComparer.cs
- MetaModel.cs
- _HelperAsyncResults.cs
- VisualBrush.cs
- SafeNativeMethods.cs
- DynamicDataResources.Designer.cs
- CounterCreationData.cs
- SchemaDeclBase.cs
- XamlToRtfWriter.cs
- StandardOleMarshalObject.cs
- TextMarkerSource.cs
- TypeLibConverter.cs
- ShapeTypeface.cs
- NotifyParentPropertyAttribute.cs
- ExpressionBuilderContext.cs
- UserPreferenceChangedEventArgs.cs
- invalidudtexception.cs
- _SingleItemRequestCache.cs
- RoleManagerEventArgs.cs
- ExpressionDumper.cs
- DataContractSerializerSection.cs
- Point3DValueSerializer.cs
- PropertyFilter.cs
- SerialStream.cs
- WebAdminConfigurationHelper.cs
- CodePageUtils.cs
- PasswordPropertyTextAttribute.cs
- OnOperation.cs
- ConfigXmlSignificantWhitespace.cs
- MostlySingletonList.cs
- IgnoreDataMemberAttribute.cs
- OrderedDictionary.cs
- DbMetaDataColumnNames.cs
- DataRecordInfo.cs
- DataGridViewAdvancedBorderStyle.cs
- HitTestWithGeometryDrawingContextWalker.cs
- SetStoryboardSpeedRatio.cs
- BindingElementExtensionElement.cs
- DetailsViewInsertEventArgs.cs
- SchemaImporterExtension.cs
- XmlText.cs
- Timer.cs
- SafeLocalMemHandle.cs
- UseLicense.cs
- querybuilder.cs
- PerformanceCounterCategory.cs
- MachineKeyValidationConverter.cs
- CompilationLock.cs
- HtmlShim.cs
- RegistrySecurity.cs
- ClockGroup.cs
- AdornerPresentationContext.cs
- DataViewManager.cs
- ExtenderProvidedPropertyAttribute.cs
- SafeFileMappingHandle.cs
- GetReadStreamResult.cs
- ThreadStartException.cs
- ObjectDataSource.cs
- DataControlFieldCollection.cs
- TimeSpanStorage.cs