現在、複数のウィンドウを持つ WPF アプリに取り組んでいます。「メイン」ウィンドウから、アプリ全体を閉じることができるはずです。アプリが閉じられる前に、クライアントは、基本的に「アプリを閉じてもよろしいですか」と尋ね、ユーザーが応答するまで他のすべてのウィンドウをブロックするダイアログ ボックスを表示することを望んでいます。
現在、MessageBox.Show() を使用してこのダイアログ ボックスを作成していますが、何らかの理由でメイン ウィンドウしかブロックされません。
これは、私が話していることの最も単純な例です。2 つのボタンを持つ WPF ウィンドウを作成する場合:
private void openChildWindowButton_Click(object sender, RoutedEventArgs e)
{
var window = new ChildWindow();
window.Show();
}
private void openDialogButton_Click(object sender, RoutedEventArgs e)
{
MessageBox.Show(this, "This should freeze all other windows");
}
ダイアログを開くと、最初のウィンドウが完全にフリーズします。それをクリックしたり、何らかの操作を試みたりすると、OS が「ディン!」と音を立てます。メッセージボックスの枠線が点滅します。しかし、開いた他のすべてのウィンドウは、クリック、移動、サイズ変更などを行うことができます。これを防ぎたいのです。