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
- BatchParser.cs
- SystemColors.cs
- TextRange.cs
- TreeNodeStyle.cs
- FontUnitConverter.cs
- DecimalConverter.cs
- RecipientInfo.cs
- StorageComplexTypeMapping.cs
- ISessionStateStore.cs
- DbProviderServices.cs
- HuffModule.cs
- AspNetHostingPermission.cs
- RegexRunnerFactory.cs
- InternalMappingException.cs
- IndentedWriter.cs
- Types.cs
- ListItemConverter.cs
- DBDataPermissionAttribute.cs
- ExportException.cs
- EntityCommand.cs
- FlowDocument.cs
- QuaternionIndependentAnimationStorage.cs
- UserNamePasswordValidator.cs
- CodeTypeParameter.cs
- AttachmentCollection.cs
- Environment.cs
- Quad.cs
- HostedTransportConfigurationManager.cs
- CompilerLocalReference.cs
- DummyDataSource.cs
- ConversionValidationRule.cs
- DuplicateWaitObjectException.cs
- IFlowDocumentViewer.cs
- WeakEventTable.cs
- PersonalizationStateInfoCollection.cs
- ResXDataNode.cs
- NetworkStream.cs
- FixedSOMSemanticBox.cs
- ModelVisual3D.cs
- _NTAuthentication.cs
- CalendarTable.cs
- OdbcTransaction.cs
- XmlWriterSettings.cs
- SessionStateModule.cs
- FloaterParaClient.cs
- InheritanceContextHelper.cs
- DataContractAttribute.cs
- ConstructorExpr.cs
- ProcessModule.cs
- BaseCollection.cs
- SqlExpander.cs
- NgenServicingAttributes.cs
- TextServicesCompartment.cs
- ScriptIgnoreAttribute.cs
- TextDocumentView.cs
- TextUtf8RawTextWriter.cs
- FrameworkTemplate.cs
- InlineObject.cs
- Walker.cs
- SafeHandles.cs
- EmptyQuery.cs
- DriveInfo.cs
- ObjectDataSourceStatusEventArgs.cs
- Parameter.cs
- RecordConverter.cs
- webproxy.cs
- BuildProvidersCompiler.cs
- DesignerDataParameter.cs
- CodePropertyReferenceExpression.cs
- CharacterBuffer.cs
- FileInfo.cs
- PrimitiveCodeDomSerializer.cs
- ArraySegment.cs
- DataSourceDesigner.cs
- SqlComparer.cs
- WmlValidatorAdapter.cs
- Debug.cs
- TemplateBindingExpression.cs
- X509Certificate.cs
- CachedFontFamily.cs
- TextRangeBase.cs
- _ListenerAsyncResult.cs
- XmlSigningNodeWriter.cs
- ScopelessEnumAttribute.cs
- DataException.cs
- ToolBar.cs
- SafeRegistryKey.cs
- XPathParser.cs
- PropertyEmitter.cs
- HttpValueCollection.cs
- ProfileEventArgs.cs
- DesignerVerbToolStripMenuItem.cs
- HttpCapabilitiesBase.cs
- FieldNameLookup.cs
- IImplicitResourceProvider.cs
- CodeParameterDeclarationExpression.cs
- DataPagerFieldCollection.cs
- DrawingImage.cs
- StubHelpers.cs
- GenericRootAutomationPeer.cs