2010-01-28 134 views
5

我的用户控件中有一个按钮,它应该用于从其父容器中删除用户控件。这是我今天编写它的方式。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中这样做是否正常?

+2

而不是删除你可能会尝试将其'可见性'属性设置为'折叠',应该有相同的视觉效果,并不会导致在后台太多混乱。 – 2010-01-28 10:17:17

回答

6

是的,它看起来很好。正如Mike Hillberg写的in his blog

一个元素实际上并没有选择它的逻辑父元素;相反,父母“采用”孩子。

因此,“去除”孩子也是通过父母的对象模型完成的。

作为一个方面说明:当父母不是面板(而不是等待InvalidCastException)时,您可能需要考虑抛出一个“漂亮”异常(甚至禁用按钮)。