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); }
internal static DependencyObject GetUIParentCore(DependencyObject o) { UIElement e = o as UIElement; if (e != null) { return(e.GetUIParentCore()); } else { ContentElement ce = o as ContentElement; if (ce != null) { return(ce.GetUIParentCore()); } else { UIElement3D e3D = o as UIElement3D; if (e3D != null) { return(e3D.GetUIParentCore()); } } return(null); } }