Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Framework / System / Windows / DescendentsWalkerBase.cs / 2 / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- FocusWithinProperty.cs
- ExpressionTable.cs
- FakeModelItemImpl.cs
- _NestedMultipleAsyncResult.cs
- TextElementEnumerator.cs
- Size.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- SrgsElement.cs
- CompleteWizardStep.cs
- BehaviorEditorPart.cs
- PropertyGridEditorPart.cs
- SchemaObjectWriter.cs
- TypedTableBase.cs
- XsdSchemaFileEditor.cs
- AssemblyResourceLoader.cs
- StyleBamlTreeBuilder.cs
- SingleTagSectionHandler.cs
- ContentTextAutomationPeer.cs
- ClickablePoint.cs
- httpapplicationstate.cs
- RefreshResponseInfo.cs
- MultiSelectRootGridEntry.cs
- ZipIOZip64EndOfCentralDirectoryLocatorBlock.cs
- FixedPageStructure.cs
- Vector3DAnimation.cs
- TreeView.cs
- LinearGradientBrush.cs
- DataControlImageButton.cs
- SettingsBase.cs
- C14NUtil.cs
- Margins.cs
- XmlDocumentType.cs
- SchemaExporter.cs
- DbParameterCollection.cs
- ViewCellSlot.cs
- ObjectStateManagerMetadata.cs
- ReplyChannelAcceptor.cs
- DataRowChangeEvent.cs
- ArgumentsParser.cs
- OdbcRowUpdatingEvent.cs
- TableItemStyle.cs
- EmbeddedObject.cs
- SrgsElementFactoryCompiler.cs
- TogglePatternIdentifiers.cs
- XPathDocumentNavigator.cs
- MetadataFile.cs
- DnsCache.cs
- FormatConvertedBitmap.cs
- MethodAccessException.cs
- HijriCalendar.cs
- IsolatedStorageFilePermission.cs
- DefaultCompensation.cs
- DbParameterHelper.cs
- Int16Storage.cs
- BitmapEffectGroup.cs
- EventSetterHandlerConverter.cs
- ControlUtil.cs
- ListViewAutomationPeer.cs
- QuotedPrintableStream.cs
- ListSourceHelper.cs
- TdsParserStateObject.cs
- TableItemStyle.cs
- ConfigurationValidatorBase.cs
- TextRangeEditLists.cs
- Storyboard.cs
- OneToOneMappingSerializer.cs
- DataGridViewSelectedCellCollection.cs
- UnsafeNativeMethods.cs
- Material.cs
- XsltContext.cs
- DirectionalLight.cs
- SkewTransform.cs
- CompilerCollection.cs
- MulticastOption.cs
- TextServicesDisplayAttributePropertyRanges.cs
- WinInetCache.cs
- ToggleProviderWrapper.cs
- IPGlobalProperties.cs
- CompressedStack.cs
- PermissionRequestEvidence.cs
- CachedBitmap.cs
- SkewTransform.cs
- EntitySetBaseCollection.cs
- Win32SafeHandles.cs
- CodeLinePragma.cs
- HostingPreferredMapPath.cs
- CroppedBitmap.cs
- ConfigXmlComment.cs
- ExpressionParser.cs
- WindowsEditBoxRange.cs
- TemplateParser.cs
- InputElement.cs
- SmtpNetworkElement.cs
- DbConnectionInternal.cs
- ItemsPresenter.cs
- NetworkCredential.cs
- WorkflowFormatterBehavior.cs
- Int64Converter.cs
- InfoCardKeyedHashAlgorithm.cs
- InheritanceContextChangedEventManager.cs