我的用户控件中有一个按钮,用于从其父容器中删除用户控件。这就是我今天编写它的方式。
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中这样做是否正常?
答案 0 :(得分:6)
是的,它对我来说很好看。正如迈克希尔伯格写道in his blog:
元素实际上并没有选择其逻辑父元素;相反,父母“收养”孩子。
因此,通过父母的对象模型也可以“删除”一个孩子。
作为旁注:当父母不是Panel(而不是等待InvalidCastException
)时,您可能想要考虑抛出“好”异常(甚至禁用按钮)。