Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / MS / Internal / DeferredElementTreeState.cs / 1305600 / 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. 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
- Properties.cs
- AttachmentService.cs
- PropertyInfoSet.cs
- ParallelQuery.cs
- TimeoutException.cs
- TextParagraph.cs
- ControlPaint.cs
- ReachPageContentSerializer.cs
- DocumentOrderComparer.cs
- StateMachine.cs
- DataBinding.cs
- Range.cs
- RawStylusInputCustomDataList.cs
- FastEncoderWindow.cs
- ProtocolsConfigurationHandler.cs
- ModelUIElement3D.cs
- BlockExpression.cs
- Label.cs
- DrawTreeNodeEventArgs.cs
- TypographyProperties.cs
- SignatureConfirmationElement.cs
- RadialGradientBrush.cs
- DataControlLinkButton.cs
- DataAdapter.cs
- LayoutTableCell.cs
- MultitargetUtil.cs
- CodeDelegateInvokeExpression.cs
- Mappings.cs
- XmlSubtreeReader.cs
- safex509handles.cs
- SafeThreadHandle.cs
- VersionedStream.cs
- ImportContext.cs
- ToolStripItemImageRenderEventArgs.cs
- printdlgexmarshaler.cs
- AlgoModule.cs
- FontDialog.cs
- IsolationInterop.cs
- RenderDataDrawingContext.cs
- PageStatePersister.cs
- Win32PrintDialog.cs
- ReadOnlyMetadataCollection.cs
- StateWorkerRequest.cs
- StringConcat.cs
- SqlExpressionNullability.cs
- FileDialog.cs
- OperationBehaviorAttribute.cs
- ToolstripProfessionalRenderer.cs
- CryptoHelper.cs
- FontDialog.cs
- XmlConverter.cs
- CompilerErrorCollection.cs
- _DomainName.cs
- TextRunCache.cs
- DisplayInformation.cs
- PathSegment.cs
- DesignTimeSiteMapProvider.cs
- LoadGrammarCompletedEventArgs.cs
- ArrayWithOffset.cs
- Oci.cs
- TransferRequestHandler.cs
- ChildTable.cs
- CallbackHandler.cs
- TextReader.cs
- DeploymentExceptionMapper.cs
- WmlLabelAdapter.cs
- ImageUrlEditor.cs
- InfoCardRSAPKCS1SignatureFormatter.cs
- ScrollableControl.cs
- SmtpException.cs
- XomlSerializationHelpers.cs
- MemberPath.cs
- WebPartDescription.cs
- ZipIOCentralDirectoryBlock.cs
- BitVec.cs
- AsymmetricKeyExchangeFormatter.cs
- HostingEnvironment.cs
- Inflater.cs
- XPathSingletonIterator.cs
- ProcessProtocolHandler.cs
- MemoryMappedViewStream.cs
- _NTAuthentication.cs
- AspProxy.cs
- ThemeInfoAttribute.cs
- WebPartConnectionsCloseVerb.cs
- ConfigXmlElement.cs
- XPathConvert.cs
- precedingsibling.cs
- EncryptedReference.cs
- QueryParameter.cs
- ConnectionPointCookie.cs
- HtmlTernaryTree.cs
- Camera.cs
- codemethodreferenceexpression.cs
- DtcInterfaces.cs
- DateTimeValueSerializer.cs
- SocketPermission.cs
- XPathSelfQuery.cs
- CompositeFontFamily.cs
- RectKeyFrameCollection.cs