Code:
/ DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / MS / Internal / DeferredElementTreeState.cs / 2 / 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
- ImportCatalogPart.cs
- Bezier.cs
- Grammar.cs
- MimeMultiPart.cs
- Journal.cs
- BinarySerializer.cs
- RequestedSignatureDialog.cs
- WindowsToolbar.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- KeyEvent.cs
- SourceFileBuildProvider.cs
- RightsManagementEncryptedStream.cs
- ColorConverter.cs
- BufferAllocator.cs
- SystemResources.cs
- SByte.cs
- Grant.cs
- Exceptions.cs
- WindowsSysHeader.cs
- ConfigUtil.cs
- StateWorkerRequest.cs
- VariableExpressionConverter.cs
- ReadOnlyActivityGlyph.cs
- ConfigXmlReader.cs
- GroupBox.cs
- FrameworkElementAutomationPeer.cs
- SQLInt16.cs
- IpcChannel.cs
- SiteMapNodeItemEventArgs.cs
- RealProxy.cs
- DefinitionUpdate.cs
- SqlConnectionPoolProviderInfo.cs
- GCHandleCookieTable.cs
- FlowPosition.cs
- ObjectCloneHelper.cs
- ItemAutomationPeer.cs
- PopOutPanel.cs
- Oid.cs
- IndividualDeviceConfig.cs
- HttpCapabilitiesSectionHandler.cs
- TextPointerBase.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- _AutoWebProxyScriptHelper.cs
- XmlBoundElement.cs
- ExceptionHelpers.cs
- SEHException.cs
- DrawingDrawingContext.cs
- DESCryptoServiceProvider.cs
- Win32KeyboardDevice.cs
- GridViewCancelEditEventArgs.cs
- XmlQueryRuntime.cs
- TextSegment.cs
- MessageLogTraceRecord.cs
- CodeExporter.cs
- PrePostDescendentsWalker.cs
- TableLayoutCellPaintEventArgs.cs
- CultureInfo.cs
- MenuStrip.cs
- ByteAnimation.cs
- ListBindableAttribute.cs
- DoubleLinkList.cs
- TrustManagerPromptUI.cs
- UnmanagedMemoryStream.cs
- PowerStatus.cs
- Subtree.cs
- DefaultMemberAttribute.cs
- EpmSourcePathSegment.cs
- DesignTimeHTMLTextWriter.cs
- DefaultObjectMappingItemCollection.cs
- XamlToRtfParser.cs
- IsolatedStoragePermission.cs
- StatusBarAutomationPeer.cs
- Image.cs
- ColorConverter.cs
- AutoGeneratedField.cs
- MailAddress.cs
- HMACMD5.cs
- DetailsViewUpdateEventArgs.cs
- PrefixQName.cs
- RelativeSource.cs
- HtmlControl.cs
- CmsUtils.cs
- DataGridRelationshipRow.cs
- SyndicationPerson.cs
- BindingMemberInfo.cs
- StorageFunctionMapping.cs
- ThreadPool.cs
- PropertyMetadata.cs
- MultiView.cs
- KnownTypesProvider.cs
- WinEventHandler.cs
- CultureMapper.cs
- SmiContextFactory.cs
- OracleEncoding.cs
- SocketPermission.cs
- JulianCalendar.cs
- XPathNodePointer.cs
- HierarchicalDataSourceControl.cs
- _SslStream.cs
- Queue.cs