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
- MenuItemStyle.cs
- MemoryStream.cs
- RestHandlerFactory.cs
- XsltLoader.cs
- BaseInfoTable.cs
- WebBrowserBase.cs
- TypedReference.cs
- FormViewModeEventArgs.cs
- PropertyValueChangedEvent.cs
- GridViewSelectEventArgs.cs
- TransactionCache.cs
- ProfileServiceManager.cs
- KeyGesture.cs
- ZoneButton.cs
- UITypeEditor.cs
- Size.cs
- WebPartDisplayMode.cs
- Random.cs
- CompModSwitches.cs
- Message.cs
- ChildTable.cs
- ViewStateException.cs
- PrintSystemException.cs
- DesignerLinkAdapter.cs
- SamlAction.cs
- UserControlParser.cs
- QueryableFilterRepeater.cs
- ImmutableCollection.cs
- FormatterServices.cs
- ReferentialConstraintRoleElement.cs
- RegexMatch.cs
- SspiSafeHandles.cs
- StdValidatorsAndConverters.cs
- Group.cs
- QueryCacheEntry.cs
- DPTypeDescriptorContext.cs
- OpCodes.cs
- dtdvalidator.cs
- DirectoryGroupQuery.cs
- FormViewCommandEventArgs.cs
- FileFormatException.cs
- CommandField.cs
- HtmlTableCell.cs
- TransportListener.cs
- DbConnectionStringCommon.cs
- PopupControlService.cs
- CodeNamespace.cs
- Parameter.cs
- PhysicalOps.cs
- ActivityExecutor.cs
- SpotLight.cs
- ScalarConstant.cs
- XmlConvert.cs
- NameValueSectionHandler.cs
- TableRowCollection.cs
- BitmapVisualManager.cs
- PropertyKey.cs
- DotNetATv1WindowsLogEntryDeserializer.cs
- FloaterParagraph.cs
- HttpClientCredentialType.cs
- Size3D.cs
- CroppedBitmap.cs
- ChoiceConverter.cs
- ModelItemCollectionImpl.cs
- IImplicitResourceProvider.cs
- XmlMapping.cs
- DetailsViewPagerRow.cs
- ToolStripLabel.cs
- XmlQueryOutput.cs
- BufferedGraphicsContext.cs
- CodeExporter.cs
- HostSecurityManager.cs
- XmlDictionaryReader.cs
- RowParagraph.cs
- DataSourceXmlClassAttribute.cs
- Script.cs
- FontStyle.cs
- Bezier.cs
- SimpleHandlerFactory.cs
- DataTemplateKey.cs
- TextReturnReader.cs
- ArrayTypeMismatchException.cs
- InvalidEnumArgumentException.cs
- KeyTime.cs
- DelayedRegex.cs
- Typeface.cs
- UndoEngine.cs
- StylusButtonCollection.cs
- RightsManagementInformation.cs
- TemplateNameScope.cs
- SaveFileDialog.cs
- Compiler.cs
- DateTimeParse.cs
- AndMessageFilterTable.cs
- SQLMoneyStorage.cs
- MobileControlDesigner.cs
- SafeArrayRankMismatchException.cs
- HttpCacheParams.cs
- ObjectKeyFrameCollection.cs
- ExpressionBuilderCollection.cs