我的用户控件中有一个按钮,用于从其父容器中删除用户控件。这就是我今天的编码方式。
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中这样做正常吗?
最佳答案
是的,我觉得还不错。正如 Mike Hillberg 所写 in his blog :
An element doesn’t actually pick its logical parent; instead, a parent “adopts” children.
因此,“删除”子项也是通过父项的对象模型完成的。
附带说明:当父级不是 Panel(而不是等待 InvalidCastException
)时,您可能需要考虑抛出一个“不错”的异常(或者甚至禁用按钮)。
关于c# - WPF:从父容器中删除 "yourself",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2153485/