4

私のWPFアプリケーションには、フルスクリーンの MainWindowがあります。メインウィンドウから、ユーザーはプレビューウィンドウを開くことができます。PreviewWindowはモーダルウィンドウであるため、MainWindowの上にあります。ここまでは順調ですね。

それでも、プレビューウィンドウが開いている間、ユーザーはWindowsタスクバーからメインウィンドウを選択できます。次に、PreviewWindowはMainWindowの下に非表示になりますが、 PreviewWindowがまだ唯一のアクティブなウィンドウであるため、MainWindowは無効になります。ユーザーにとっては、アプリケーションが応答しなくなったように見えます。

ユーザーがそのように動作する理由はわかりませんが、ユーザーは動作し、多くの混乱を引き起こします。

私たちの最初の解決策は、PreviewWindowを一番上にすることでしたが、それはあまり役に立ちませんでした。プレビューウィンドウから、ユーザーはSaveDialogを開くことができます。ただし、PreviewWindowが一番上にある場合、SaveDialogはPreviewWindowの下に非表示になります。

私の考えは、ユーザーがSaveDialogを開くまで、PreviewWindowを一番上することです。そして、SaveDialogが終了した後、再び最上位にします。

これがそれを行う唯一の方法ですか?親ウィンドウが選択されたときにモーダルウィンドウをトップに戻す方法はありますか?

4

3 に答える 3

2

2つのこと:

  1. PreviewWindowがにShowInTaskbar設定されていることを確認してくださいFalse
  2. を設定してから、との両方でPreviewWindow.Owner = MainWindow試してください。Show()ShowDialog()
于 2013-03-25T09:49:27.633 に答える
1

モーダルウィンドウの場合は、Window.ShowDialog()を使用して表示する必要があります。

それができない理由はありますか?

于 2013-03-25T09:45:58.773 に答える
1

他の回答は完全ではなく、関連性もありません。申し訳ありませんが;)

最初のウィンドウに進む前に2番目のウィンドウの終わりを待つには、ShowDialog()を使用します。所有者プロパティを使用してウィンドウをリンクします。

   previewWindow = new Window2();
   previewWindow.Owner = this;
   previewWindow.ShowDialog();

必要に応じて、3つ以上のウィンドウで機能します(w1起動w2、w2起動w3、...)。タスクバーで最初のウィンドウを選択すると、すべてのウィンドウが表示されます。

TopMostまたはShowInTaskbarプロパティを設定する必要はありません(ただし、特定の動作が必要な場合は設定できます)

于 2013-03-25T10:50:21.880 に答える