我在WPF
中拥有用户控制权。这应该在多个Windows中使用。我希望在运行时获得当前的父窗口。
在用户控制代码隐藏文件中,正在使用以下行。
MyWindow1 parentWindow = (MyWindow1)Window.GetWindow(this);
如果在UserControl
中使用相同的MyWindow2
怎么办?在这种情况下,上面的行不正确。任何建议?
答案 0 :(得分:2)
你可以做到这一点虽然我不认为让孩子控制以这种方式引用父母是一个非常好的代码设计。
如果您有这样一个要求的理由,您可以在说UserControl
的构造函数中执行类似的操作
Loaded += (sender, args) => {
Window win = Window.GetWindow(this);
if (win == null)
return;
if (win is MyWindow1) {
MessageBox.Show("Window 1");
} else if (win is MyWindow2) {
MessageBox.Show("Window 2");
}
};
您基本上使用is
运算符检查类型,然后执行操作。除非你有非常令人信服的理由,否则我建议不要沿着这条路走下去。