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
- _OverlappedAsyncResult.cs
- DataViewListener.cs
- OledbConnectionStringbuilder.cs
- SQLBoolean.cs
- ContextStaticAttribute.cs
- PaintEvent.cs
- EncoderParameters.cs
- Track.cs
- EncoderParameter.cs
- Point.cs
- RewritingProcessor.cs
- RoamingStoreFile.cs
- TempFiles.cs
- DefaultEventAttribute.cs
- FixedDocument.cs
- InfiniteIntConverter.cs
- TextParagraphView.cs
- IODescriptionAttribute.cs
- DesignerCategoryAttribute.cs
- OdbcConnectionFactory.cs
- Win32Native.cs
- Zone.cs
- Brush.cs
- RoleService.cs
- XmlNamespaceDeclarationsAttribute.cs
- FrugalMap.cs
- Internal.cs
- UniqueCodeIdentifierScope.cs
- FlowDecisionLabelFeature.cs
- SurrogateSelector.cs
- BooleanToSelectiveScrollingOrientationConverter.cs
- HtmlMeta.cs
- LinqDataSource.cs
- TemplateBindingExtension.cs
- Int32RectValueSerializer.cs
- ConnectorSelectionGlyph.cs
- PrintSystemException.cs
- DSASignatureDeformatter.cs
- TransformerConfigurationWizardBase.cs
- MappingSource.cs
- GridViewCellAutomationPeer.cs
- SemanticResolver.cs
- BasePropertyDescriptor.cs
- QueryOutputWriter.cs
- StateWorkerRequest.cs
- PathFigureCollection.cs
- ByteFacetDescriptionElement.cs
- OleDbRowUpdatingEvent.cs
- IntegerValidator.cs
- TransactionScope.cs
- LayoutInformation.cs
- XmlSchemaInfo.cs
- MemberDomainMap.cs
- Solver.cs
- PackWebRequestFactory.cs
- BindingExpressionBase.cs
- GACIdentityPermission.cs
- UnhandledExceptionEventArgs.cs
- DataGridViewCheckBoxColumn.cs
- Bits.cs
- Marshal.cs
- EventDrivenDesigner.cs
- InvokeHandlers.cs
- TextRangeSerialization.cs
- MetadataArtifactLoaderCompositeResource.cs
- FrameworkElementAutomationPeer.cs
- MessageQueueAccessControlEntry.cs
- BaseTemplateBuildProvider.cs
- GlobalItem.cs
- TargetControlTypeCache.cs
- ImportCatalogPart.cs
- PropertyMapper.cs
- WebPartEditVerb.cs
- Utils.cs
- EtwTrace.cs
- RectangleGeometry.cs
- CallbackTimeoutsElement.cs
- StrongBox.cs
- DataGridColumnHeadersPresenterAutomationPeer.cs
- DataObjectSettingDataEventArgs.cs
- StaticExtension.cs
- UIElementHelper.cs
- ImageAnimator.cs
- InfoCardUIAgent.cs
- WorkflowServiceBehavior.cs
- AgileSafeNativeMemoryHandle.cs
- DecoratedNameAttribute.cs
- InputLangChangeRequestEvent.cs
- ConfigurationValues.cs
- SplitterEvent.cs
- FamilyMapCollection.cs
- DateTimePicker.cs
- documentation.cs
- OdbcFactory.cs
- XamlTypeMapper.cs
- MatrixUtil.cs
- TreeNodeCollectionEditorDialog.cs
- RtfControlWordInfo.cs
- DeleteHelper.cs
- XmlSerializerAssemblyAttribute.cs