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
- TemplateControlCodeDomTreeGenerator.cs
- Viewport3DVisual.cs
- Line.cs
- SqlConnectionPoolGroupProviderInfo.cs
- XmlSchemaComplexContentRestriction.cs
- BooleanAnimationUsingKeyFrames.cs
- BStrWrapper.cs
- DashStyle.cs
- RecognizerInfo.cs
- MSG.cs
- RoleGroupCollection.cs
- UpDownEvent.cs
- Select.cs
- CompiledRegexRunnerFactory.cs
- DataGridViewCheckBoxCell.cs
- LogEntryUtils.cs
- RawStylusInput.cs
- HttpModuleCollection.cs
- CookieProtection.cs
- TypeDescriptionProvider.cs
- MTConfigUtil.cs
- recordstatescratchpad.cs
- Buffer.cs
- TimeSpanSecondsOrInfiniteConverter.cs
- StreamingContext.cs
- Utils.cs
- DefinitionUpdate.cs
- OleDbError.cs
- Int64AnimationBase.cs
- DateTimeConverter.cs
- Rules.cs
- BinaryObjectInfo.cs
- RegistryDataKey.cs
- DetailsViewRow.cs
- Win32KeyboardDevice.cs
- XmlQueryOutput.cs
- XmlReaderSettings.cs
- DuplicateWaitObjectException.cs
- DescendantOverDescendantQuery.cs
- RemotingConfigParser.cs
- FtpWebResponse.cs
- XPathScanner.cs
- NestedContainer.cs
- ValidatorCollection.cs
- SystemResourceHost.cs
- PinnedBufferMemoryStream.cs
- sqlmetadatafactory.cs
- PropertyGridView.cs
- _ServiceNameStore.cs
- SelectedDatesCollection.cs
- DayRenderEvent.cs
- RichTextBoxConstants.cs
- Stopwatch.cs
- GridViewSelectEventArgs.cs
- DataViewManager.cs
- EventProxy.cs
- CounterCreationDataConverter.cs
- LoadWorkflowAsyncResult.cs
- CellRelation.cs
- MSAANativeProvider.cs
- BaseHashHelper.cs
- RemotingServices.cs
- DataControlPagerLinkButton.cs
- FrameworkContentElement.cs
- ServiceOperationParameter.cs
- EdmScalarPropertyAttribute.cs
- XPathChildIterator.cs
- CompilerScopeManager.cs
- Rfc2898DeriveBytes.cs
- HtmlEncodedRawTextWriter.cs
- FieldBuilder.cs
- ColumnHeaderConverter.cs
- Misc.cs
- ContentElement.cs
- MergeLocalizationDirectives.cs
- WebServiceErrorEvent.cs
- StretchValidation.cs
- PerformanceCounterPermissionEntry.cs
- XmlDataDocument.cs
- GetWinFXPath.cs
- TextRunCache.cs
- ValidatorCompatibilityHelper.cs
- SmtpSection.cs
- TakeQueryOptionExpression.cs
- PhotoPrintingIntent.cs
- ControlParameter.cs
- StorageComplexPropertyMapping.cs
- ToolStripEditorManager.cs
- FileNotFoundException.cs
- BitmapEffectGroup.cs
- LinqDataSourceEditData.cs
- __Filters.cs
- KeyValuePair.cs
- Sequence.cs
- GridViewUpdatedEventArgs.cs
- OletxTransactionFormatter.cs
- UnmanagedBitmapWrapper.cs
- PackageRelationshipSelector.cs
- Sequence.cs
- SelectionProviderWrapper.cs