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
- IconBitmapDecoder.cs
- WorkflowViewStateService.cs
- WrappedReader.cs
- ImageAttributes.cs
- SessionStateItemCollection.cs
- Function.cs
- DirectionalLight.cs
- MaskedTextBoxDesignerActionList.cs
- LayoutEvent.cs
- FontStyles.cs
- _TransmitFileOverlappedAsyncResult.cs
- RoutedEventArgs.cs
- BackEase.cs
- RowToParametersTransformer.cs
- Environment.cs
- NavigationEventArgs.cs
- DefaultProxySection.cs
- AnnotationDocumentPaginator.cs
- VisualStyleElement.cs
- ClientFormsIdentity.cs
- DodSequenceMerge.cs
- RuntimeVariablesExpression.cs
- SystemIPGlobalProperties.cs
- ImageDrawing.cs
- InputBuffer.cs
- TextTrailingCharacterEllipsis.cs
- StringReader.cs
- HttpPostedFileWrapper.cs
- PropertyMappingExceptionEventArgs.cs
- XmlSerializerAssemblyAttribute.cs
- UseLicense.cs
- TextProviderWrapper.cs
- DispatcherExceptionFilterEventArgs.cs
- ExpressionBindings.cs
- LinkArea.cs
- CommandHelper.cs
- ModuleBuilder.cs
- SubstitutionResponseElement.cs
- EntityContainerRelationshipSet.cs
- DiffuseMaterial.cs
- WindowsListViewGroup.cs
- ResourceDescriptionAttribute.cs
- FilterElement.cs
- Double.cs
- PageTheme.cs
- TableLayoutPanelCellPosition.cs
- Stack.cs
- BufferedStream2.cs
- XhtmlBasicTextViewAdapter.cs
- ParamArrayAttribute.cs
- GCHandleCookieTable.cs
- PolicyImporterElementCollection.cs
- CFGGrammar.cs
- StatusCommandUI.cs
- SiteMembershipCondition.cs
- StorageModelBuildProvider.cs
- ProcessHostServerConfig.cs
- DataControlFieldCell.cs
- XmlDataContract.cs
- StrongNameKeyPair.cs
- WebServiceMethodData.cs
- UserUseLicenseDictionaryLoader.cs
- TextServicesPropertyRanges.cs
- SoapServerMethod.cs
- LocalBuilder.cs
- Triangle.cs
- TextTreeUndoUnit.cs
- IODescriptionAttribute.cs
- SqlConnectionHelper.cs
- OptimalBreakSession.cs
- ViewPort3D.cs
- FilterableAttribute.cs
- dsa.cs
- FormsAuthenticationUser.cs
- SqlConnectionPoolProviderInfo.cs
- MessageDispatch.cs
- SamlNameIdentifierClaimResource.cs
- ClientBuildManagerCallback.cs
- Group.cs
- DynamicPropertyReader.cs
- ApplicationManager.cs
- MonitoringDescriptionAttribute.cs
- XmlSchemaAttributeGroup.cs
- HtmlControlAdapter.cs
- AnnouncementInnerClient11.cs
- TypeResolver.cs
- ExceptionCollection.cs
- TextSchema.cs
- prefixendpointaddressmessagefiltertable.cs
- AudioFormatConverter.cs
- DropShadowEffect.cs
- HttpsChannelListener.cs
- ExceptionValidationRule.cs
- CultureInfoConverter.cs
- WinCategoryAttribute.cs
- InheritanceService.cs
- AmbientLight.cs
- XPathParser.cs
- PenLineJoinValidation.cs
- ToolBarTray.cs