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
- NumberFunctions.cs
- AuthorizationSection.cs
- PathTooLongException.cs
- Permission.cs
- DataGridViewSelectedCellCollection.cs
- FileNameEditor.cs
- Wildcard.cs
- ISFTagAndGuidCache.cs
- ServiceOperationListItemList.cs
- ProjectedSlot.cs
- BasicHttpMessageSecurityElement.cs
- DiscoveryClientOutputChannel.cs
- WsatServiceCertificate.cs
- EncoderParameter.cs
- DocumentViewerBase.cs
- StylusLogic.cs
- XmlDictionaryString.cs
- LogicalExpr.cs
- DbDataRecord.cs
- MappingSource.cs
- DBProviderConfigurationHandler.cs
- SupportsEventValidationAttribute.cs
- WebPartDisplayModeCollection.cs
- XmlCDATASection.cs
- DataSourceControl.cs
- DecimalAnimationUsingKeyFrames.cs
- CodeDomLoader.cs
- CqlGenerator.cs
- Parameter.cs
- ExecutedRoutedEventArgs.cs
- SqlGenerator.cs
- XamlHttpHandlerFactory.cs
- BinaryOperationBinder.cs
- TableRowCollection.cs
- TextChangedEventArgs.cs
- ImagingCache.cs
- AutomationPropertyInfo.cs
- ImageCodecInfoPrivate.cs
- TreeNodeStyleCollection.cs
- SerializationHelper.cs
- GridItemCollection.cs
- KeyFrames.cs
- PaintValueEventArgs.cs
- BuildDependencySet.cs
- BCLDebug.cs
- StopStoryboard.cs
- SafeFileMapViewHandle.cs
- CounterSample.cs
- ProcessingInstructionAction.cs
- WorkflowViewElement.cs
- TdsParserStaticMethods.cs
- LineVisual.cs
- ISAPIRuntime.cs
- TextComposition.cs
- _LocalDataStoreMgr.cs
- OdbcConnectionString.cs
- ProcessHostConfigUtils.cs
- ClientRoleProvider.cs
- CompilerState.cs
- MetaData.cs
- IISMapPath.cs
- TextSerializer.cs
- PrintControllerWithStatusDialog.cs
- TextEditorLists.cs
- PermissionSet.cs
- SingleSelectRootGridEntry.cs
- XPathSingletonIterator.cs
- SHA512Managed.cs
- UpdateCompiler.cs
- BasicHttpMessageCredentialType.cs
- UserPreferenceChangingEventArgs.cs
- ApplicationGesture.cs
- ObjectContext.cs
- PropertyValueUIItem.cs
- HandleScope.cs
- DataBindingList.cs
- CreationContext.cs
- HandledMouseEvent.cs
- CheckBox.cs
- WCFServiceClientProxyGenerator.cs
- ObjectReaderCompiler.cs
- RequiredFieldValidator.cs
- DataStorage.cs
- DbParameterHelper.cs
- ClientProxyGenerator.cs
- InfocardChannelParameter.cs
- ScriptMethodAttribute.cs
- FtpRequestCacheValidator.cs
- RSAPKCS1KeyExchangeDeformatter.cs
- _ConnectStream.cs
- DescendentsWalker.cs
- WebUtil.cs
- RuleSetReference.cs
- FormatException.cs
- AxImporter.cs
- ComponentResourceKey.cs
- TextProperties.cs
- EnterpriseServicesHelper.cs
- MetadataArtifactLoaderXmlReaderWrapper.cs
- ImageIndexConverter.cs