如何获取元素的父级?

5
MainPage.xaml

<Grid Background="{ThemeResource ApplicationPageBackgroundThemeBrush}">
    <Grid x:Name="GridA">
        <Grid x:Name="GridB"/>
    </Grid>
</Grid>

如何从GridB获取父级GridB

这是我想要做的事情。

//Null
Panel parent1 = GridB.Parent as Panel;

//Null
Panel parent2 = VisualTreeHelper.GetParent(GridB) as Panel;

所有它们返回的都是 null。
有什么想法吗?

1
你的 GridB 的父级是一个 Grid,而不是一个 Panel - diiN__________
尝试将GridB的父级转换为Grid类型,赋值给parent1变量。 - Uthistran Selvaraj
我尝试了,但parent1也返回null。 - aiur
我知道为什么它总是返回 null,因为我把代码写在页面构造函数里了。 ;( - aiur
1个回答

10

使用VisualTreeHelper.GetParent方法,但要像这样使用UIElement而不是Panel

var parent = VisualTreeHelper.GetParent(GridB) as UIElement;
string pName = (parent as Grid).Name; //GridA

还可以参考这里,其中有一个名为FindAncestor<T>(DependencyObject obj)的方法,可以在更高级别中找到父元素。 - Beauty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接