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
- FontUnit.cs
- TraceLevelStore.cs
- OutputScopeManager.cs
- X509ChainElement.cs
- RegexInterpreter.cs
- PackageRelationship.cs
- XhtmlConformanceSection.cs
- ArrayHelper.cs
- ConnectionStringSettingsCollection.cs
- NavigationFailedEventArgs.cs
- Point.cs
- ApplicationCommands.cs
- TemplateComponentConnector.cs
- TypeResolver.cs
- DataGridViewControlCollection.cs
- XmlElementList.cs
- ChangeTracker.cs
- EntityViewContainer.cs
- LocatorPart.cs
- ObjectDisposedException.cs
- GeneralTransform3DTo2D.cs
- ValidatedControlConverter.cs
- DataBindingHandlerAttribute.cs
- MatcherBuilder.cs
- ProcessInfo.cs
- IteratorFilter.cs
- GregorianCalendar.cs
- SqlFileStream.cs
- RequestUriProcessor.cs
- ConfigurationManagerHelperFactory.cs
- BackStopAuthenticationModule.cs
- RadioButtonList.cs
- EventLogEntry.cs
- XmlDataSourceDesigner.cs
- RoleService.cs
- CompressedStack.cs
- XPathNavigatorReader.cs
- NetTcpSecurityElement.cs
- ToolStripContentPanel.cs
- DataGridCellAutomationPeer.cs
- StoreItemCollection.cs
- XmlText.cs
- dtdvalidator.cs
- ListItemsCollectionEditor.cs
- InternalConfigEventArgs.cs
- ProviderIncompatibleException.cs
- ObjectCacheHost.cs
- XamlSerializerUtil.cs
- EnterpriseServicesHelper.cs
- OdbcConnectionString.cs
- ObjectListSelectEventArgs.cs
- LogEntrySerialization.cs
- DataGridViewRowPrePaintEventArgs.cs
- SystemColors.cs
- IPPacketInformation.cs
- CacheAxisQuery.cs
- TraceUtils.cs
- ParameterCollectionEditor.cs
- InputLanguage.cs
- RequestCacheEntry.cs
- ApplyHostConfigurationBehavior.cs
- MouseWheelEventArgs.cs
- ZoneIdentityPermission.cs
- TTSEngineProxy.cs
- util.cs
- SimpleRecyclingCache.cs
- VisualCollection.cs
- ClientWindowsAuthenticationMembershipProvider.cs
- BindingList.cs
- TypeForwardedToAttribute.cs
- Container.cs
- DataTableNewRowEvent.cs
- BamlBinaryWriter.cs
- ImmComposition.cs
- EdmEntityTypeAttribute.cs
- WindowsStatic.cs
- Processor.cs
- WebHostScriptMappingsInstallComponent.cs
- linebase.cs
- Point3DCollectionConverter.cs
- XmlEncodedRawTextWriter.cs
- ConnectionStringsExpressionBuilder.cs
- PackageStore.cs
- SoapFault.cs
- BitmapSourceSafeMILHandle.cs
- CommonDialog.cs
- typedescriptorpermissionattribute.cs
- ExceptionRoutedEventArgs.cs
- PagerSettings.cs
- ProcessManager.cs
- GeneralTransform3D.cs
- XPathNavigatorReader.cs
- CompoundFileIOPermission.cs
- TextBoxRenderer.cs
- ControlUtil.cs
- HttpModule.cs
- RetriableClipboard.cs
- InvokeWebServiceDesigner.cs
- CustomAttributeBuilder.cs
- FormsAuthenticationUserCollection.cs