WPF:从父容器中删除“您自己”

时间:2010-01-28 09:35:16

标签: c# wpf

我的用户控件中有一个按钮,用于从其父容器中删除用户控件。这就是我今天编写它的方式。

private void RemoveRoleButton_Click(object sender, RoutedEventArgs e)
{
    if (ConfirmRoleRemoval())
    {
        Panel parentPanel = (Panel)this.Parent;
        parentPanel.Children.Remove(this);
    }
}

private bool ConfirmRoleRemoval()
{
    return MessageBox.Show("Are you sure [...]
}

在WPF中这样做是否正常?

1 个答案:

答案 0 :(得分:6)

是的,它对我来说很好看。正如迈克希尔伯格写道in his blog

  

元素实际上并没有选择其逻辑父元素;相反,父母“收养”孩子。

因此,通过父母的对象模型也可以“删除”一个孩子。

作为旁注:当父母不是Panel(而不是等待InvalidCastException)时,您可能想要考虑抛出“好”异常(甚至禁用按钮)。