0

にユーザーコントロールがありWPFます。これは、複数のWindowsで使用されることになっています。実行時に現在の親ウィンドウを取得したい。

ユーザー制御コードビハインドファイルでは、次の行が使用されています。

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

同じUserControlwudがで使用されている場合はどうなりMyWindow2ますか?この場合、上記の行は正しくありません。何か提案はありますか?

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 に答える