Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / Orcas / NetFXw7 / wpf / src / Core / CSharp / MS / Internal / DeferredElementTreeState.cs / 1 / 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
- MSAAWinEventWrap.cs
- StylusPoint.cs
- PersonalizationStateInfo.cs
- SetStateEventArgs.cs
- TransportSecurityHelpers.cs
- RegistrySecurity.cs
- Model3DGroup.cs
- DirectoryObjectSecurity.cs
- ObjectStateEntryOriginalDbUpdatableDataRecord.cs
- OptimalTextSource.cs
- SetStoryboardSpeedRatio.cs
- BoundPropertyEntry.cs
- NameValuePermission.cs
- XmlException.cs
- SubstitutionList.cs
- ContentHostHelper.cs
- ConfigurationStrings.cs
- DesignerAdapterAttribute.cs
- EventMappingSettingsCollection.cs
- EmissiveMaterial.cs
- DataMisalignedException.cs
- WinEventWrap.cs
- TimelineGroup.cs
- InternalControlCollection.cs
- WindowsMenu.cs
- RuntimeIdentifierPropertyAttribute.cs
- WorkflowDebuggerSteppingAttribute.cs
- InnerItemCollectionView.cs
- UnknownBitmapEncoder.cs
- RegexMatch.cs
- MsmqProcessProtocolHandler.cs
- EventHandlerList.cs
- HtmlElementErrorEventArgs.cs
- LoopExpression.cs
- EnterpriseServicesHelper.cs
- HttpCookiesSection.cs
- NameValueCollection.cs
- ModelPropertyImpl.cs
- IgnoreDeviceFilterElement.cs
- WebDescriptionAttribute.cs
- PropertyToken.cs
- ZipIOCentralDirectoryBlock.cs
- SoapInteropTypes.cs
- CustomGrammar.cs
- WindowPatternIdentifiers.cs
- Path.cs
- CryptoKeySecurity.cs
- FileSystemWatcher.cs
- VisualTreeUtils.cs
- CodeStatementCollection.cs
- _NegoStream.cs
- TakeQueryOptionExpression.cs
- SiteMapNode.cs
- shaperfactoryquerycacheentry.cs
- StrongNameIdentityPermission.cs
- UnsafeNativeMethods.cs
- Number.cs
- ISessionStateStore.cs
- AuthenticationModuleElement.cs
- InkCanvasAutomationPeer.cs
- MSAAEventDispatcher.cs
- securestring.cs
- VBIdentifierTrimConverter.cs
- XmlQueryOutput.cs
- DbMetaDataColumnNames.cs
- GridViewCommandEventArgs.cs
- ListViewEditEventArgs.cs
- RefExpr.cs
- complextypematerializer.cs
- MenuItemBinding.cs
- IntranetCredentialPolicy.cs
- SparseMemoryStream.cs
- AlternateViewCollection.cs
- ObjectDataSourceDisposingEventArgs.cs
- XmlCharType.cs
- BindingManagerDataErrorEventArgs.cs
- EmptyControlCollection.cs
- ILGenerator.cs
- OpacityConverter.cs
- Int64Converter.cs
- JsonDeserializer.cs
- OleDbMetaDataFactory.cs
- CodeDirectiveCollection.cs
- DBPropSet.cs
- WebHttpSecurity.cs
- HttpListenerPrefixCollection.cs
- ExtendedPropertiesHandler.cs
- EdmSchemaAttribute.cs
- Delay.cs
- Rules.cs
- PenLineJoinValidation.cs
- SatelliteContractVersionAttribute.cs
- NavigationExpr.cs
- TileBrush.cs
- PrintPreviewGraphics.cs
- IdentitySection.cs
- MetafileHeaderWmf.cs
- OdbcDataAdapter.cs
- BaseParagraph.cs
- InputScope.cs