0

我在WPF. 这应该在多个 Windows 中使用。我想在运行时获取当前的父窗口。

在用户控制代码隐藏文件中,正在使用以下行。

MyWindow1 parentWindow = (MyWindow1)Window.GetWindow(this);

如果使用相同的UserControlwudMyWindow2怎么办?在这种情况下,上述行将不正确。有什么建议吗?

4

1 回答 1

2

你可以这样做,尽管我认为让子控件以这种方式引用父母并不是一个很好的代码设计。

如果您有理由满足此类要求,则可以在 sayUserControl的构造函数中执行类似的操作

  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运算符来检查类型,然后执行您的操作。我再次建议不要沿着这条路线走,除非你有非常令人信服的理由。

于 2013-03-11T09:58:39.320 回答