public static DependencyObject GetVisualOrLogicalParent(this DependencyObject dep) { if (dep == null) { return(null); } var ce = dep as ContentElement; if (ce != null) { var parent = ContentOperations.GetParent(ce); if (parent != null) { return(parent); } var fce = ce as FrameworkContentElement; return(fce != null ? fce.Parent : null); } if (dep is Visual || dep is Visual3D) { return(VisualTreeHelper.GetParent(dep)); } // If we're in Logical Land then we must walk // up the logical tree until we find a // Visual/Visual3D to get us back to Visual Land. return(LogicalTreeHelper.GetParent(dep)); }
/// <summary> /// Returns the first <see cref="UIElement" /> in the ancestral chain including /// the element itself. /// </summary> /// <param name="element"> /// The <see cref="DependencyObject" /> to get the containing UI element for. /// </param> /// <returns> /// The first <see cref="UIElement" /> that contains the <paramref name="element" />. /// </returns> /// <exception cref="ArgumentNullException"> /// If <paramref name="element" /> is null. /// </exception> public static UIElement GetContainingElement(this DependencyObject element) { if (element == null) { throw new ArgumentNullException("element"); } var uiElement = element as UIElement; if (uiElement != null) { return(uiElement); } var contentElement = element as ContentElement; if (contentElement != null) { DependencyObject parent = ContentOperations.GetParent(contentElement) ?? LogicalTreeHelper.GetParent(contentElement); if (parent != null) { return(GetContainingElement(parent)); } } return(null); }
/// <summary> /// This method is an alternative to WPF's /// <see cref="VisualTreeHelper.GetParent"/> method, which also /// supports content elements. Keep in mind that for content element, /// this method falls back to the logical tree of the element! /// </summary> /// <param name="child">The item to be processed.</param> /// <returns>The submitted item's parent, if available. Otherwise /// null.</returns> public static DependencyObject GetParentObject(this DependencyObject child) { switch (child) { case null: return(null); //handle content elements separately case ContentElement contentElement: { var parent = ContentOperations.GetParent(contentElement); if (parent != null) { return(parent); } return(contentElement is FrameworkContentElement fce ? fce.Parent : null); } //also try searching for parent in framework elements (such as DockPanel, etc) case FrameworkElement frameworkElement: { var parent = frameworkElement.Parent; if (parent != null) { return(parent); } break; } } //if it's not a ContentElement/FrameworkElement, rely on VisualTreeHelper return(VisualTreeHelper.GetParent(child)); }
public static DependencyObject FindObjectParent(DependencyObject source, Predicate <DependencyObject> isTypeMatching) { DependencyObject testOb = source; while (testOb != null && !isTypeMatching(testOb)) { var nextParentOb = LogicalTreeHelper.GetParent(testOb); if (nextParentOb == null) { if (testOb is FrameworkElement) { nextParentOb = VisualTreeHelper.GetParent(testOb); } if (nextParentOb == null && testOb is ContentElement) { nextParentOb = ContentOperations.GetParent((ContentElement)testOb); } if (nextParentOb == null) { nextParentOb = InheritanceContextProp.GetValue(testOb, null) as DependencyObject; } } testOb = nextParentOb; } return(testOb); }
static DependencyObject GetParentObject(DependencyObject child) { if (child == null) { return(null); } ContentElement contentElement = child as ContentElement; if (contentElement != null) { DependencyObject parent = ContentOperations.GetParent(contentElement); if (parent != null) { return(parent); } FrameworkContentElement fce = contentElement as FrameworkContentElement; return(fce != null ? fce.Parent : null); } FrameworkElement frameworkElement = child as FrameworkElement; if (frameworkElement != null) { DependencyObject parent = frameworkElement.Parent; if (parent != null) { return(parent); } } return(VisualTreeHelper.GetParent(child)); }
public static DependencyObject GetParent(this DependencyObject child) { if (child == null) { return((DependencyObject)null); } ContentElement reference = child as ContentElement; if (reference == null) { return(VisualTreeHelper.GetParent(child)); } DependencyObject parent = ContentOperations.GetParent(reference); if (parent != null) { return(parent); } FrameworkContentElement frameworkContentElement = reference as FrameworkContentElement; if (frameworkContentElement == null) { return((DependencyObject)null); } else { return(frameworkContentElement.Parent); } }
internal static DependencyObject FindParent(DependencyObject o) { DependencyObject dependencyObject = o as Visual; if (dependencyObject == null) { dependencyObject = (o as Visual3D); } ContentElement contentElement = (dependencyObject == null) ? (o as ContentElement) : null; if (contentElement != null) { o = ContentOperations.GetParent(contentElement); if (o != null) { return(o); } FrameworkContentElement frameworkContentElement = contentElement as FrameworkContentElement; if (frameworkContentElement != null) { return(frameworkContentElement.Parent); } } else if (dependencyObject != null) { return(VisualTreeHelper.GetParent(dependencyObject)); } return(null); }
/// <summary> /// Uses reflection and internal InheritanceContext, potentially fragile /// http://stackoverflow.com/a/20988314/1069200 /// </summary> /// <param name="child"></param> /// <returns></returns> public static IEnumerable <DependencyObject> AllAncestors(this DependencyObject child) { while (child != null) { var parent = LogicalTreeHelper.GetParent(child); if (parent == null) { if (child is FrameworkElement) { parent = VisualTreeHelper.GetParent(child); } if (parent == null && child is ContentElement) { parent = ContentOperations.GetParent((ContentElement)child); } if (parent == null) { parent = InheritanceContextProp.GetValue(child, null) as DependencyObject; } } if (parent == null) { yield break; } child = parent; yield return(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); }
/// <summary> /// Gets the parent. Which tree the parent is retrieved from depends on the parameters. /// </summary> /// <param name="child">The child to get parent for.</param> /// <param name="searchCompleteVisualTree">If true the parent in the visual tree is returned, if false the parent may be retrieved from another tree depending on the child type.</param> /// <returns>The parent element, and depending on the parameters its retrieved from either visual tree, logical tree or a tree not strictly speaking either the logical tree or the visual tree.</returns> public static DependencyObject GetParentObject(this DependencyObject child, bool searchCompleteVisualTree) { if (child == null) return null; if (!searchCompleteVisualTree) { var contentElement = child as ContentElement; if (contentElement != null) { DependencyObject parent = ContentOperations.GetParent(contentElement); if (parent != null) return parent; var fce = contentElement as FrameworkContentElement; return fce != null ? fce.Parent : null; } var frameworkElement = child as FrameworkElement; if (frameworkElement != null) { DependencyObject parent = frameworkElement.Parent; if (parent != null) return parent; } } return VisualTreeHelper.GetParent(child); }
private T FindVisualParent <T>(DependencyObject obj, DependencyProperty property, object value) where T : DependencyObject { while (obj != null) { ContentElement contentElement = obj as ContentElement; if (contentElement != null) { // if our object is a content element, find its parent via ContentOperations.GetParent(...) obj = ContentOperations.GetParent(contentElement); // if that fails, try FrameworkContentElement.Parent instead. FrameworkContentElement frameworkContentElement = contentElement as FrameworkContentElement; if (frameworkContentElement != null) { obj = frameworkContentElement.Parent; } else { obj = null; } } else { // if our object is not a content element, find its parent via VisualTreeHelper.GetParent(...) obj = VisualTreeHelper.GetParent(obj); } if (obj != null && obj is T && (property == null || value == null || value.Equals(obj.GetValue(property)))) { return((T)obj); } } return(null); }
public static DependencyObject GetParentObject(this DependencyObject context) { if (context == null) { return(null); } ContentElement contextAsContentElement = context as ContentElement; if (contextAsContentElement != null) { DependencyObject parentOfContentElement = ContentOperations.GetParent(contextAsContentElement); if (parentOfContentElement != null) { return(parentOfContentElement); } } FrameworkElement contextAsFrameworkElement = context as FrameworkElement; if (contextAsFrameworkElement != null) { DependencyObject parent = contextAsFrameworkElement.Parent; if (parent != null) { return(parent); } } return(VisualTreeHelper.GetParent(context)); }
public void CreateDraftEvent() { this.CreateCalendar(); var operations = new ContentOperations <Events>(); var eventItem = new Events(); eventTitle = TestContentPrefix + Guid.NewGuid().ToString(); eventItem.Title = eventTitle; eventItem.Content = EventContent; eventItem.EventStart = DateTime.UtcNow.ToString("o"); eventItem.EventEnd = DateTime.UtcNow.AddHours(2).ToString("o"); eventItem.ParentId = calendarId.ToString(); var response = operations.CreateDraft(eventItem); Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); var results = JsonConvert.DeserializeObject <dynamic>(response.Content); Assert.AreEqual(eventItem.Title, results.Title.ToString()); Assert.AreEqual(eventItem.Content, results.Content.ToString()); eventId = results.Id; Assert.IsNotNull(eventId); }
public static DependencyObject GetParentObject(this DependencyObject child) { switch (child) { case null: return(null); case ContentElement contentElement: { DependencyObject parent = ContentOperations.GetParent(contentElement); if (parent != null) { return(parent); } return(contentElement is FrameworkContentElement fce ? fce.Parent : null); } case FrameworkElement frameworkElement: { DependencyObject parent = frameworkElement.Parent; if (parent != null) { return(parent); } break; } } return(VisualTreeHelper.GetParent(child)); }
public void CreateBlogPost() { this.CreateBlog(); Posts post = new Posts(); postTitle = TestContentPrefix + Guid.NewGuid().ToString(); post.Title = blogsTitle; post.ParentId = blogId.ToString(); post.Content = PostContent; var operations = new ContentOperations <Posts>(); operations.CreateDraft(post); var response = operations.CreateDraft(post); Assert.AreEqual(HttpStatusCode.Created, response.StatusCode); var results = JsonConvert.DeserializeObject <dynamic>(response.Content); Assert.AreEqual(post.Title, results.Title.ToString()); postId = results.Id; Assert.IsNotNull(blogId); response = operations.Publish(post); Assert.AreEqual(HttpStatusCode.OK, response.StatusCode); }
private static DependencyObject FindParent(DependencyObject o) { Visual v = o as Visual; ContentElement ce = (v == null) ? o as ContentElement : null; if (ce != null) { o = ContentOperations.GetParent(ce); if (o != null) { return(o); } else { FrameworkContentElement fce = ce as FrameworkContentElement; if (fce != null) { return(fce.Parent); } } } else if (v != null) { return(VisualTreeHelper.GetParent(v)); } return(null); }
public static DependencyObject GetParentObject(this DependencyObject child) { if (child == null) { return(null); } var contentElement = child as ContentElement; if (contentElement != null) { var parent = ContentOperations.GetParent(contentElement); if (parent != null) { return(parent); } var frameworkContentElement = contentElement as FrameworkContentElement; return(frameworkContentElement != null ? frameworkContentElement.Parent : null); } var frameworkElement = child as FrameworkElement; if (frameworkElement != null) { var parent = frameworkElement.Parent; if (parent != null) { return(parent); } } return(VisualTreeHelper.GetParent(child)); }
public static DependencyObject GetParent(this DependencyObject dependencyObject) { if (dependencyObject == null) { throw new ArgumentNullException(nameof(dependencyObject)); } var fe = dependencyObject as FrameworkElement; if (fe?.Parent != null) { return(fe.Parent); } var ce = dependencyObject as ContentElement; if (ce == null) { return(VisualTreeHelper.GetParent(dependencyObject)); } var parent = ContentOperations.GetParent(ce); if (parent != null) { return(parent); } var fce = ce as FrameworkContentElement; return(fce?.Parent); }
internal static FrameworkObject GetContainingFrameworkElement(DependencyObject current) { var fo = new FrameworkObject(current); while (!fo.IsValid && fo.DependencyObject != null) { // The current object is neither a FrameworkElement nor a // FrameworkContentElement. We will now walk the "core" // tree looking for one. Visual visual; Visual3D visual3D; ContentElement ce; if ((visual = fo.DependencyObject as Visual) != null) { fo.Reset(VisualTreeHelper.GetParent(visual)); } else if ((ce = fo.DependencyObject as ContentElement) != null) { fo.Reset(ContentOperations.GetParent(ce)); } else if ((visual3D = fo.DependencyObject as Visual3D) != null) { fo.Reset(VisualTreeHelper.GetParent(visual3D)); } else { // The parent could be an application. fo.Reset(null); } } return(fo); }
public static DependencyObject GetParentObject(this DependencyObject element) { if (element == null) { return(null); } if (element is ContentElement) { var parent = ContentOperations.GetParent((ContentElement)element); if (parent != null) { return(parent); } var fce = element as FrameworkContentElement; return(fce != null ? fce.Parent : null); } if (element is FrameworkElement) { var parent = ((FrameworkElement)element).Parent; if (parent != null) { return(parent); } } return(VisualTreeHelper.GetParent(element)); }
internal static DependencyObject FindContentElementParent(ContentElement ce) { DependencyObject dependencyObject = null; DependencyObject dependencyObject2 = ce; while (dependencyObject2 != null) { dependencyObject = (dependencyObject2 as Visual); if (dependencyObject != null) { break; } dependencyObject = (dependencyObject2 as Visual3D); if (dependencyObject != null) { break; } ce = (dependencyObject2 as ContentElement); if (ce == null) { break; } dependencyObject2 = ContentOperations.GetParent(ce); if (dependencyObject2 == null) { FrameworkContentElement frameworkContentElement = ce as FrameworkContentElement; if (frameworkContentElement != null) { dependencyObject2 = frameworkContentElement.Parent; } } } return(dependencyObject); }
public static DependencyObject GetParentObject(this DependencyObject child) { if (child == null) { return(null); } if (child is ContentElement contentElement) { var parent = ContentOperations.GetParent(contentElement); if (parent != null) { return(parent); } return(contentElement is FrameworkContentElement fce ? fce.Parent : null); } if (child is FrameworkElement frameworkElement) { var parent = frameworkElement.Parent; if (parent != null) { return(parent); } } return(VisualTreeHelper.GetParent(child)); }
// Token: 0x0600648E RID: 25742 RVA: 0x001C36C8 File Offset: 0x001C18C8 internal static FrameworkObject GetContainingFrameworkElement(DependencyObject current) { FrameworkObject result = new FrameworkObject(current); while (!result.IsValid && result.DO != null) { Visual reference; ContentElement reference2; Visual3D reference3; if ((reference = (result.DO as Visual)) != null) { result.Reset(VisualTreeHelper.GetParent(reference)); } else if ((reference2 = (result.DO as ContentElement)) != null) { result.Reset(ContentOperations.GetParent(reference2)); } else if ((reference3 = (result.DO as Visual3D)) != null) { result.Reset(VisualTreeHelper.GetParent(reference3)); } else { result.Reset(null); } } return(result); }
public static DependencyObject GetParentObject(DependencyObject child) { if (child == null) { return(null); } ContentElement contentElement = child as ContentElement; DependencyObject parent = null; if (contentElement != null) { parent = ContentOperations.GetParent(contentElement); if (parent != null) { return(parent); } FrameworkContentElement fce = contentElement as FrameworkContentElement; return(fce != null ? fce.Parent : null); } //if it's not a ContentElement, rely on VisualTreeHelper parent = VisualTreeHelper.GetParent(child); if (parent == null && child is FrameworkElement) { return((child as FrameworkElement).Parent); } return(parent); }
internal static DependencyObject FindParent(DependencyObject o) { var visual = (DependencyObject)(o as Visual) ?? o as Visual3D; var contentElement = visual == null ? o as ContentElement : null; if (contentElement != null) { o = ContentOperations.GetParent(contentElement); if (o != null) { return(o); } var frameworkContentElement = contentElement as FrameworkContentElement; if (frameworkContentElement != null) { return(frameworkContentElement.Parent); } return(null); } if (visual != null) { return(VisualTreeHelper.GetParent(visual)); } return(null); }
private static DependencyObject GetParent(DependencyObject o) { if (o == null) { return(null); } if (o is ContentElement) { DependencyObject parent = ContentOperations.GetParent((ContentElement)o); if (parent != null) { return(parent); } if (o is FrameworkContentElement) { return(((FrameworkContentElement)o).Parent); } } else if (o is FrameworkElement) { return(((FrameworkElement)o).Parent); } return(VisualTreeHelper.GetParent(o)); }
public static DependencyObject GetParent(DependencyObject obj) { if (obj == null) { return(null); } var ce = obj as ContentElement; if (ce == null) { return(VisualTreeHelper.GetParent(obj)); } var parent = ContentOperations.GetParent(ce); if (parent != null) { return(parent); } var fce = ce as FrameworkContentElement; return(fce != null ? fce.Parent : null); }
private static T TryFindParent <T>(DependencyObject child) where T : DependencyObject { DependencyObject parent; if (child == null) { return(null); } if (child is ContentElement contentElement) { parent = ContentOperations.GetParent(contentElement); if (parent == null && child is FrameworkContentElement fce) { parent = fce.Parent; } } else { parent = VisualTreeHelper.GetParent(child); } if (parent is T result) { return(result); } else { return(TryFindParent <T>(parent)); } }
/// <summary> /// Finds the direct visual parent of an element. /// </summary> public static DependencyObject GetVisualParent(this DependencyObject dependencyObject) { DependencyObject parentObject = null; if (dependencyObject != null) { ContentElement contentElement = dependencyObject as ContentElement; if (contentElement != null) { DependencyObject parent = ContentOperations.GetParent(contentElement); if (parent != null) { parentObject = parent; } else { FrameworkContentElement frameworkContentElement = contentElement as FrameworkContentElement; parentObject = frameworkContentElement != null ? frameworkContentElement.Parent : null; } } else { parentObject = VisualTreeHelper.GetParent(dependencyObject); } } return(parentObject); }
internal static DependencyObject FindParent(DependencyObject o) { // see if o is a Visual or a Visual3D DependencyObject v = o as Visual; if (v == null) { v = o as Visual3D; } ContentElement ce = (v == null) ? o as ContentElement : null; if (ce != null) { o = ContentOperations.GetParent(ce); if (o != null) { return(o); } else { FrameworkContentElement fce = ce as FrameworkContentElement; if (fce != null) { return(fce.Parent); } } } else if (v != null) { return(VisualTreeHelper.GetParent(v)); } return(null); }