Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Storyboard.cs
- ChangeInterceptorAttribute.cs
- PropertyToken.cs
- CacheAxisQuery.cs
- SqlRewriteScalarSubqueries.cs
- HttpUnhandledOperationInvoker.cs
- CodeIndexerExpression.cs
- ClientScriptItem.cs
- ConstNode.cs
- DispatcherTimer.cs
- CoTaskMemHandle.cs
- ValidatorCollection.cs
- Constraint.cs
- CheckBoxField.cs
- WindowsGraphicsWrapper.cs
- DocumentViewerBase.cs
- EntityRecordInfo.cs
- TextServicesPropertyRanges.cs
- SystemInfo.cs
- Utils.cs
- RegisterResponseInfo.cs
- RangeValueProviderWrapper.cs
- InternalConfigRoot.cs
- CodeGroup.cs
- MessageQueueKey.cs
- EdmProperty.cs
- LookupBindingPropertiesAttribute.cs
- RelativeSource.cs
- StylusTouchDevice.cs
- PersonalizableAttribute.cs
- DataGridItem.cs
- UnauthorizedWebPart.cs
- XmlSortKeyAccumulator.cs
- ConfigXmlDocument.cs
- HMACSHA512.cs
- UrlEncodedParameterWriter.cs
- WebPartMovingEventArgs.cs
- BreakRecordTable.cs
- KerberosSecurityTokenAuthenticator.cs
- SafeHandles.cs
- ActivityExecutor.cs
- HWStack.cs
- SQLMembershipProvider.cs
- CodeDomConfigurationHandler.cs
- TdsValueSetter.cs
- CodeCommentStatementCollection.cs
- Stopwatch.cs
- SqlXmlStorage.cs
- XmlILIndex.cs
- SelectionService.cs
- ObservableCollection.cs
- UnknownWrapper.cs
- VariableExpressionConverter.cs
- StrongNameUtility.cs
- TextRangeProviderWrapper.cs
- XmlElementCollection.cs
- CharEntityEncoderFallback.cs
- DBPropSet.cs
- CompiledScopeCriteria.cs
- DuplicateContext.cs
- VirtualPath.cs
- SafeNativeMethods.cs
- RSAPKCS1KeyExchangeFormatter.cs
- ConvertTextFrag.cs
- DiscreteKeyFrames.cs
- TypedTableBase.cs
- ActiveXHelper.cs
- PagesSection.cs
- AttributeAction.cs
- KerberosTokenFactoryCredential.cs
- TrustSection.cs
- GroupBoxRenderer.cs
- DataServiceKeyAttribute.cs
- clipboard.cs
- PackageDigitalSignatureManager.cs
- InstanceKeyCollisionException.cs
- NativeConfigurationLoader.cs
- EditorPartCollection.cs
- RIPEMD160Managed.cs
- WindowsListBox.cs
- BindingWorker.cs
- HwndSource.cs
- BinaryObjectInfo.cs
- SerializationInfoEnumerator.cs
- SymLanguageVendor.cs
- CapabilitiesRule.cs
- SiteMapHierarchicalDataSourceView.cs
- ProfileInfo.cs
- SmiRequestExecutor.cs
- TakeQueryOptionExpression.cs
- HttpCacheVaryByContentEncodings.cs
- DesignerSerializationVisibilityAttribute.cs
- ToolboxDataAttribute.cs
- WSSecurityPolicy12.cs
- ClientScriptManager.cs
- Parameter.cs
- MinimizableAttributeTypeConverter.cs
- EnumerableCollectionView.cs
- ApplicationCommands.cs
- XmlSchemaDocumentation.cs