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
- RelatedEnd.cs
- Pipe.cs
- SerializerDescriptor.cs
- Ops.cs
- FrameworkName.cs
- ConfigXmlWhitespace.cs
- PrinterResolution.cs
- BindingSource.cs
- DynamicValidator.cs
- XmlSignatureProperties.cs
- LinqDataSourceUpdateEventArgs.cs
- RowUpdatedEventArgs.cs
- ChtmlCalendarAdapter.cs
- SqlReorderer.cs
- MediaTimeline.cs
- DropShadowEffect.cs
- BrowserCapabilitiesFactoryBase.cs
- ToolStripTextBox.cs
- CompilerState.cs
- entitydatasourceentitysetnameconverter.cs
- MatrixCamera.cs
- PreservationFileReader.cs
- SqlBulkCopy.cs
- XmlSchemaType.cs
- IIS7UserPrincipal.cs
- SplashScreenNativeMethods.cs
- MetadataHelper.cs
- ApplicationCommands.cs
- DeriveBytes.cs
- StackBuilderSink.cs
- LicenseProviderAttribute.cs
- PeerCollaborationPermission.cs
- DesignerSerializationOptionsAttribute.cs
- SqlEnums.cs
- GCHandleCookieTable.cs
- DbConnectionHelper.cs
- BreakRecordTable.cs
- Accessible.cs
- BamlBinaryWriter.cs
- DPCustomTypeDescriptor.cs
- VBCodeProvider.cs
- LeaseManager.cs
- ThumbButtonInfoCollection.cs
- XmlDigitalSignatureProcessor.cs
- HtmlGenericControl.cs
- MimeMultiPart.cs
- StateItem.cs
- ObjectDataSourceWizardForm.cs
- TypedServiceOperationListItem.cs
- _OverlappedAsyncResult.cs
- FontStretchConverter.cs
- ComplexTypeEmitter.cs
- DataGridViewTextBoxEditingControl.cs
- ZipFileInfo.cs
- KeyboardNavigation.cs
- HttpStaticObjectsCollectionWrapper.cs
- ToolboxDataAttribute.cs
- DataListItemCollection.cs
- PackageRelationship.cs
- FocusChangedEventArgs.cs
- KerberosSecurityTokenParameters.cs
- LayoutManager.cs
- TextComposition.cs
- LambdaCompiler.Unary.cs
- PriorityBindingExpression.cs
- SamlSecurityTokenAuthenticator.cs
- RemotingConfigParser.cs
- RuleSettings.cs
- UInt64Converter.cs
- sqlser.cs
- TypeElement.cs
- CodeMemberMethod.cs
- ListViewInsertionMark.cs
- MouseEvent.cs
- TextBox.cs
- HttpModuleAction.cs
- TextDecoration.cs
- UIElementPropertyUndoUnit.cs
- SerializableAttribute.cs
- XmlSchemaObjectTable.cs
- SecurityContextTokenValidationException.cs
- DrawListViewItemEventArgs.cs
- ServiceReference.cs
- ListSourceHelper.cs
- CaseInsensitiveOrdinalStringComparer.cs
- TransactionOptions.cs
- JavaScriptObjectDeserializer.cs
- ValueQuery.cs
- IPCCacheManager.cs
- ToolStripMenuItemDesigner.cs
- metadatamappinghashervisitor.cs
- HandledMouseEvent.cs
- BrowserCapabilitiesFactoryBase.cs
- DataGridViewElement.cs
- SchemaElementDecl.cs
- LookupNode.cs
- IdentityValidationException.cs
- UrlParameterWriter.cs
- LicenseException.cs
- httpapplicationstate.cs