Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / Orcas / SP / 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
- UpdatePanelTrigger.cs
- FileDialogCustomPlace.cs
- HelpProvider.cs
- SortAction.cs
- DATA_BLOB.cs
- ServiceDebugBehavior.cs
- StringAttributeCollection.cs
- ProcessHostServerConfig.cs
- SmtpCommands.cs
- PeerNameResolver.cs
- OleDbParameter.cs
- QueryRelOp.cs
- NullableDecimalAverageAggregationOperator.cs
- UserMapPath.cs
- PriorityRange.cs
- HtmlProps.cs
- MenuItemCollectionEditorDialog.cs
- ImportCatalogPart.cs
- StructuralType.cs
- BufferedReadStream.cs
- VariableReference.cs
- Message.cs
- EncryptedPackage.cs
- CorrelationTokenInvalidatedHandler.cs
- HostProtectionPermission.cs
- TableRowCollection.cs
- WebUtility.cs
- PreviewPrintController.cs
- OutputWindow.cs
- GradientBrush.cs
- ObfuscationAttribute.cs
- RawStylusActions.cs
- EncodingInfo.cs
- CompoundFileStorageReference.cs
- HelpInfo.cs
- DataRecord.cs
- SqlFacetAttribute.cs
- DataViewManagerListItemTypeDescriptor.cs
- ViewLoader.cs
- GridEntryCollection.cs
- FactoryGenerator.cs
- OdbcConnectionHandle.cs
- LineSegment.cs
- GlobalItem.cs
- TypeSemantics.cs
- WebPartDisplayModeEventArgs.cs
- Matrix3D.cs
- IntersectQueryOperator.cs
- Point3D.cs
- TextParagraphProperties.cs
- DataGridViewRowCancelEventArgs.cs
- XmlSerializableServices.cs
- BooleanSwitch.cs
- DataViewManager.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- ObjectDataProvider.cs
- WebPartManagerInternals.cs
- DurableRuntimeValidator.cs
- SoapAttributeAttribute.cs
- TypeLibConverter.cs
- FormatConvertedBitmap.cs
- ISAPIApplicationHost.cs
- StandardBindingReliableSessionElement.cs
- TransactionsSectionGroup.cs
- ExeConfigurationFileMap.cs
- DesignerHierarchicalDataSourceView.cs
- DoubleAnimationBase.cs
- DataGridPageChangedEventArgs.cs
- WSSecurityPolicy.cs
- X509RecipientCertificateServiceElement.cs
- PrimitiveSchema.cs
- DbProviderSpecificTypePropertyAttribute.cs
- EmptyWorkItem.cs
- ProcessInfo.cs
- Exceptions.cs
- MarginsConverter.cs
- Knowncolors.cs
- MsmqNonTransactedPoisonHandler.cs
- ListenerElementsCollection.cs
- XmlC14NWriter.cs
- ErrorProvider.cs
- ProtocolElementCollection.cs
- XmlHierarchyData.cs
- DataGridBoolColumn.cs
- BitmapEffectGroup.cs
- CatalogPartChrome.cs
- ThreadInterruptedException.cs
- TdsParserSafeHandles.cs
- HelpEvent.cs
- SettingsPropertyIsReadOnlyException.cs
- RotateTransform.cs
- QualifiedCellIdBoolean.cs
- TreeSet.cs
- MethodRental.cs
- XamlLoadErrorInfo.cs
- IISUnsafeMethods.cs
- PropertyBuilder.cs
- WorkflowTraceTransfer.cs
- MatrixUtil.cs
- HttpAsyncResult.cs