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
- Random.cs
- input.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- GridProviderWrapper.cs
- NetCodeGroup.cs
- EntityDataSourceDesigner.cs
- SiteOfOriginContainer.cs
- Constant.cs
- ToolBarButton.cs
- ImageAttributes.cs
- QilGenerator.cs
- WmpBitmapDecoder.cs
- MonikerProxyAttribute.cs
- UInt32Storage.cs
- FileDialogCustomPlace.cs
- DataGridViewCheckBoxCell.cs
- Matrix3D.cs
- SrgsDocument.cs
- SiteMap.cs
- BitmapEffectGroup.cs
- Int32Rect.cs
- SQLBinaryStorage.cs
- SevenBitStream.cs
- SuppressMergeCheckAttribute.cs
- DataGridCellsPresenter.cs
- MemberDomainMap.cs
- EventLogEntryCollection.cs
- ThousandthOfEmRealPoints.cs
- WasNotInstalledException.cs
- CodeMethodReturnStatement.cs
- OperandQuery.cs
- TextServicesCompartment.cs
- SingleQueryOperator.cs
- RouteParametersHelper.cs
- ProcessDesigner.cs
- MembershipSection.cs
- FederatedMessageSecurityOverHttpElement.cs
- WebHttpEndpointElement.cs
- HostingEnvironmentException.cs
- BrushValueSerializer.cs
- XmlUnspecifiedAttribute.cs
- NamedPipeChannelListener.cs
- MediaContext.cs
- TypeSystem.cs
- TypeConverterHelper.cs
- ResXBuildProvider.cs
- TextRunCacheImp.cs
- HttpContextWrapper.cs
- DbMetaDataCollectionNames.cs
- X509Utils.cs
- XmlChildNodes.cs
- DashStyle.cs
- CompoundFileDeflateTransform.cs
- ProxyHelper.cs
- CultureInfoConverter.cs
- QilGenerator.cs
- EndpointDiscoveryMetadataCD1.cs
- SubMenuStyle.cs
- Button.cs
- ListBoxDesigner.cs
- SystemColorTracker.cs
- ProcessModuleCollection.cs
- BinaryCommonClasses.cs
- GetPageNumberCompletedEventArgs.cs
- SvcMapFileSerializer.cs
- DeclarativeCatalogPartDesigner.cs
- XDeferredAxisSource.cs
- RelationshipEnd.cs
- Expander.cs
- TdsParameterSetter.cs
- TraceSection.cs
- GridViewDeleteEventArgs.cs
- QueryOperationResponseOfT.cs
- Drawing.cs
- X509Utils.cs
- ProfileProvider.cs
- DesignerView.cs
- AdPostCacheSubstitution.cs
- LogReserveAndAppendState.cs
- Thickness.cs
- Listbox.cs
- IntranetCredentialPolicy.cs
- OrderedHashRepartitionStream.cs
- FlowDocumentScrollViewerAutomationPeer.cs
- EntitySqlQueryBuilder.cs
- CodeEntryPointMethod.cs
- XmlDataContract.cs
- ApplicationSecurityManager.cs
- BinarySerializer.cs
- BasicKeyConstraint.cs
- _HeaderInfo.cs
- NavigationProgressEventArgs.cs
- RTTypeWrapper.cs
- CompilerTypeWithParams.cs
- SwitchCase.cs
- ColorConvertedBitmapExtension.cs
- ProvidePropertyAttribute.cs
- PersonalizationProviderHelper.cs
- MenuEventArgs.cs
- TaskFileService.cs