Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / DeferredElementTreeState.cs / 2 / DeferredElementTreeState.cs
using System.Windows; using System.Collections.Generic; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Media3D; namespace MS.Internal { internal class DeferredElementTreeState { public void SetCoreParent(DependencyObject element, DependencyObject parent) { if(!_oldCoreParents.ContainsKey(element)) { _oldCoreParents[element] = parent; } } public static DependencyObject GetCoreParent(DependencyObject element, DeferredElementTreeState treeState) { DependencyObject parent = null; if(treeState != null && treeState._oldCoreParents.ContainsKey(element)) { parent = treeState._oldCoreParents[element]; } else { Visual v = element as Visual; if(v != null) { parent = VisualTreeHelper.GetParent(v); } else { ContentElement ce = element as ContentElement; if(ce != null) { parent = ContentOperations.GetParent(ce); } else { Visual3D v3D = element as Visual3D; if (v3D != null) { parent = VisualTreeHelper.GetParent(v3D); } } } } return parent; } public static DependencyObject GetInputElementParent(DependencyObject element, DeferredElementTreeState treeState) { DependencyObject parent = element; while (true) { parent = GetCoreParent(parent, treeState); if (parent == null || InputElement.IsValid(parent)) { break; } } return parent; } public void SetLogicalParent(DependencyObject element, DependencyObject parent) { if(!_oldLogicalParents.ContainsKey(element)) { _oldLogicalParents[element] = parent; } } public static DependencyObject GetLogicalParent(DependencyObject element, DeferredElementTreeState treeState) { DependencyObject parent = null; if(treeState != null && treeState._oldLogicalParents.ContainsKey(element)) { parent = treeState._oldLogicalParents[element]; } else { UIElement e = element as UIElement; if(e != null) { parent = e.GetUIParentCore(); // Overriden by FrameworkElement. } ContentElement ce = element as ContentElement; if(ce != null) { parent = ce.GetUIParentCore(); // Overriden by FrameworkContentElement. } } return parent; } public void Clear() { _oldCoreParents.Clear(); _oldLogicalParents.Clear(); } public bool IsEmpty { get { return _oldCoreParents.Count > 0 || _oldLogicalParents.Count > 0; } } private Dictionary_oldCoreParents = new Dictionary (); private Dictionary _oldLogicalParents = new Dictionary (); } } // 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
- ICspAsymmetricAlgorithm.cs
- ObjectListField.cs
- PeerCredentialElement.cs
- WaitHandleCannotBeOpenedException.cs
- DetailsViewDeleteEventArgs.cs
- ObjectStateFormatter.cs
- NavigationProgressEventArgs.cs
- PermissionSet.cs
- ObjectManager.cs
- HelloOperationAsyncResult.cs
- JsonDataContract.cs
- PageAsyncTask.cs
- PersistenceProviderBehavior.cs
- WebPartDisplayMode.cs
- Metadata.cs
- XmlUtil.cs
- Application.cs
- SafeLibraryHandle.cs
- DayRenderEvent.cs
- IRCollection.cs
- KeyConstraint.cs
- ExtensionDataObject.cs
- TextTreeRootTextBlock.cs
- CompositeScriptReference.cs
- DesignOnlyAttribute.cs
- DataObjectMethodAttribute.cs
- FixedLineResult.cs
- ReadOnlyHierarchicalDataSourceView.cs
- PenThread.cs
- HtmlShim.cs
- WebPartConnectionCollection.cs
- SingleConverter.cs
- XmlChildNodes.cs
- DescendantOverDescendantQuery.cs
- CombinedGeometry.cs
- SqlInfoMessageEvent.cs
- PropertySourceInfo.cs
- GacUtil.cs
- FusionWrap.cs
- SqlMethods.cs
- Evaluator.cs
- SqlDataSourceEnumerator.cs
- DataListComponentEditor.cs
- SubordinateTransaction.cs
- ObfuscateAssemblyAttribute.cs
- ControlCachePolicy.cs
- ContainerControl.cs
- CorrelationValidator.cs
- Geometry.cs
- CanonicalFormWriter.cs
- PartitionerStatic.cs
- BitmapCacheBrush.cs
- ConfigurationCollectionAttribute.cs
- FormViewPagerRow.cs
- ApplicationServicesHostFactory.cs
- NonDualMessageSecurityOverHttpElement.cs
- DockPatternIdentifiers.cs
- TextPointer.cs
- LinqDataSourceUpdateEventArgs.cs
- CursorInteropHelper.cs
- MultiBindingExpression.cs
- MatrixConverter.cs
- EventBindingService.cs
- EntityType.cs
- TaiwanCalendar.cs
- DataGridViewColumnDesigner.cs
- EndPoint.cs
- Brushes.cs
- SortAction.cs
- LiteralTextContainerControlBuilder.cs
- TransactionBehavior.cs
- Exceptions.cs
- AuthenticodeSignatureInformation.cs
- Number.cs
- WindowsToolbarAsMenu.cs
- DocumentSequenceHighlightLayer.cs
- EngineSiteSapi.cs
- DataGridViewCellValidatingEventArgs.cs
- sqlcontext.cs
- FixedSOMLineRanges.cs
- MenuEventArgs.cs
- CqlQuery.cs
- AddInBase.cs
- GenericRootAutomationPeer.cs
- Pts.cs
- Quad.cs
- Model3DGroup.cs
- PageBuildProvider.cs
- WebZone.cs
- MenuRendererStandards.cs
- CodeRemoveEventStatement.cs
- SqlBuilder.cs
- DataGridViewCellFormattingEventArgs.cs
- EntityDesignerDataSourceView.cs
- HttpResponseWrapper.cs
- GeneralTransform3DCollection.cs
- AlternationConverter.cs
- ResourceDescriptionAttribute.cs
- XmlRootAttribute.cs
- ProfileManager.cs