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
- DataGridViewCell.cs
- RadialGradientBrush.cs
- hwndwrapper.cs
- EntityReference.cs
- TableLayoutRowStyleCollection.cs
- Vector3DCollectionConverter.cs
- FloatAverageAggregationOperator.cs
- MonthCalendar.cs
- Nodes.cs
- TransactionOptions.cs
- ModifierKeysValueSerializer.cs
- Parser.cs
- PartialCachingControl.cs
- FixedSOMContainer.cs
- NoClickablePointException.cs
- ProvidersHelper.cs
- RowTypePropertyElement.cs
- FacetValues.cs
- XmlDomTextWriter.cs
- EncoderExceptionFallback.cs
- VisualStyleInformation.cs
- CachedPathData.cs
- RequestQueue.cs
- ActivityDesignerLayoutSerializers.cs
- InputChannelBinder.cs
- SingleAnimationBase.cs
- PropertyNames.cs
- NativeCompoundFileAPIs.cs
- SiteMapDataSourceView.cs
- WebPartZoneCollection.cs
- XslTransform.cs
- RoutedCommand.cs
- HwndStylusInputProvider.cs
- SmtpNetworkElement.cs
- ReadOnlyHierarchicalDataSource.cs
- HttpCacheVary.cs
- PingOptions.cs
- CodeRemoveEventStatement.cs
- Permission.cs
- ProfilePropertySettingsCollection.cs
- LocalBuilder.cs
- listitem.cs
- RoutingChannelExtension.cs
- RegexBoyerMoore.cs
- DetailsViewModeEventArgs.cs
- ApplicationActivator.cs
- Encoder.cs
- Hash.cs
- HandoffBehavior.cs
- DataSourceXmlAttributeAttribute.cs
- RegisteredArrayDeclaration.cs
- CodeGenerator.cs
- CompiledQuery.cs
- EventToken.cs
- SkipStoryboardToFill.cs
- XsltCompileContext.cs
- ArrayList.cs
- sqlser.cs
- OperandQuery.cs
- PropertyPathConverter.cs
- AsymmetricAlgorithm.cs
- Collection.cs
- XmlLanguageConverter.cs
- ObjectDataSourceMethodEventArgs.cs
- ToolStripPanelRenderEventArgs.cs
- EmptyQuery.cs
- ZipFileInfoCollection.cs
- GZipUtils.cs
- ExceptionRoutedEventArgs.cs
- ToolStripPanelRenderEventArgs.cs
- webclient.cs
- BuildProviderAppliesToAttribute.cs
- ObjectViewFactory.cs
- MembershipPasswordException.cs
- TextRangeAdaptor.cs
- SortExpressionBuilder.cs
- BitVector32.cs
- QueryNode.cs
- BaseUriHelper.cs
- QueryCacheEntry.cs
- OdbcConnectionOpen.cs
- InvalidEnumArgumentException.cs
- StrokeNodeOperations.cs
- InfoCardTraceRecord.cs
- ImageListStreamer.cs
- SessionStateItemCollection.cs
- CommonRemoteMemoryBlock.cs
- SkewTransform.cs
- PropertyIdentifier.cs
- StreamHelper.cs
- TempFiles.cs
- ProfileProvider.cs
- Command.cs
- SystemParameters.cs
- SizeAnimationClockResource.cs
- ApplicationHost.cs
- ObservableCollection.cs
- Message.cs
- DockEditor.cs
- CriticalHandle.cs