私のウィンドウクラスには、このようなイベントハンドラが必要です。WPF兄弟ウィンドウを作成して現在のウィンドウを閉じる
void someEventHandler(object sender, RoutedEventArgs e)
{
MyNewWindow mnw = new MyNewWindow();
mnw.Owner = Window.GetWindow(this);
mnw.ShowDialog();
this.Close();
}
Window.GetWindow(this)は、現在のウィンドウの親ウィンドウを返します。
私は新しいウィンドウの所有者が現在のウィンドウの親ウィンドウであると思っていましたが、親を待つことになりました。現在のものではありません。しかし、それはそのようには機能しませんでした。現在のウィンドウは新しいウィンドウの実行を待機し、その後にのみ閉じます。
何らかの理由でShowDialog()の代わりにShow()を使用すると、そのウィンドウはまったく表示されません。
おそらく私はいくつかのデリゲートメソッドが必要ですが、どこから始めたらよいか分かりません。
編集:将来の参照のために質問を改善する必要があると思います。 新しいウィンドウは、親ウィンドウへのダイアログでなければなりません。私がShow()を使うと、親ウィンドウがアクセシブルになり、私はそれを望んでいません。 ShowDialog()を使用すると、現在のウィンドウへのダイアログになります。つまり、新しいウィンドウが閉じられるまで現在のウィンドウが閉じず、そのどちらも必要ありません。
これを親ウィンドウで処理するのが最も簡単な方法です。子ウィンドウは他のさまざまなウィンドウから呼び出すことができ、複雑になります。私は親ウィンドウのそれぞれでイベントハンドラを変更する必要があり、私はそれを望んでいません。 – Kta
btw。 ShowDialog()の前にthis.Hide()を呼び出すことで解決策が保証されました。ウィンドウは閉じられていませんが、少なくともユーザーはそう考えています:) ty – Kta