Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ListViewUpdateEventArgs.cs
- QueueProcessor.cs
- ObjectAssociationEndMapping.cs
- BamlBinaryWriter.cs
- InternalBufferOverflowException.cs
- LockCookie.cs
- ReliableMessagingHelpers.cs
- WorkflowItemPresenter.cs
- WebRequestModuleElementCollection.cs
- StyleHelper.cs
- LocalizableAttribute.cs
- MimeParameterWriter.cs
- DbBuffer.cs
- ViewRendering.cs
- PopupRootAutomationPeer.cs
- AggregateNode.cs
- GridEntry.cs
- DataControlImageButton.cs
- DynamicControl.cs
- SimpleTextLine.cs
- TableRowCollection.cs
- FacetEnabledSchemaElement.cs
- DataPointer.cs
- TcpClientCredentialType.cs
- MetadataStore.cs
- XsltQilFactory.cs
- RangeValidator.cs
- GifBitmapDecoder.cs
- ReadOnlyNameValueCollection.cs
- AssemblyHash.cs
- ClientBuildManager.cs
- TextElementEnumerator.cs
- MdiWindowListItemConverter.cs
- UIElement.cs
- ManagementDateTime.cs
- ConfigurationValidatorAttribute.cs
- VersionPair.cs
- MatrixAnimationUsingKeyFrames.cs
- HttpBrowserCapabilitiesBase.cs
- ActivityWithResult.cs
- CompilerError.cs
- OracleParameterBinding.cs
- BrushValueSerializer.cs
- XmlCharType.cs
- ServiceHttpHandlerFactory.cs
- CounterCreationDataCollection.cs
- BufferedGraphicsManager.cs
- RewritingSimplifier.cs
- _BasicClient.cs
- ToolStripContentPanel.cs
- ContainsRowNumberChecker.cs
- Function.cs
- DependencyPropertyConverter.cs
- Behavior.cs
- DataBoundControlActionList.cs
- BoundColumn.cs
- KeyValueSerializer.cs
- String.cs
- ContainerUtilities.cs
- HitTestResult.cs
- CodeGeneratorOptions.cs
- Int16Animation.cs
- CodeCatchClause.cs
- DefaultCommandExtensionCallback.cs
- SQLGuid.cs
- DataGridHeadersVisibilityToVisibilityConverter.cs
- WindowsUpDown.cs
- DataGridViewRowConverter.cs
- TextDecoration.cs
- FunctionUpdateCommand.cs
- CompilationRelaxations.cs
- COAUTHINFO.cs
- MaskInputRejectedEventArgs.cs
- ArraySortHelper.cs
- InstalledFontCollection.cs
- SBCSCodePageEncoding.cs
- SvcFileManager.cs
- DocumentXPathNavigator.cs
- ToolStripArrowRenderEventArgs.cs
- Viewport3DAutomationPeer.cs
- FrameworkElement.cs
- XmlUrlResolver.cs
- CryptoConfig.cs
- SizeAnimation.cs
- DataControlFieldCell.cs
- Token.cs
- FontUnitConverter.cs
- PriorityItem.cs
- WindowsRichEdit.cs
- TrustManager.cs
- VolatileResourceManager.cs
- OdbcHandle.cs
- ThemeDictionaryExtension.cs
- DataStreams.cs
- OnOperation.cs
- MachineSettingsSection.cs
- AuthenticationService.cs
- ContentValidator.cs
- SystemWebExtensionsSectionGroup.cs
- StringTraceRecord.cs