ウィンドウがあり、そのデータコンテキストはビューモデルです。これで、vmとwindow(view)のスコープ外に、呼び出されるメソッドがあります。メソッドはウィンドウを表示し、ユーザーにいくつかの変更を許可する必要があります。その後、ユーザーが完了したら、ウィンドウを閉じてメソッドを続行する必要があります。トリッキーなことは、ビューモデルのコマンドにバインドされたウィンドウ上のボタンがあることです。これらのコマンドは、「userCancelled」や「userOked」などのイベントを発生させます。したがって、これらのイベントをキャッチして、ウィンドウを閉じてメソッドを続行するタイミングを知りたいと思います。
ウィンドウでShowDialogを使用すると、イベントがキャッチされません(スレッドが拘束され、ダイアログが閉じるのを待っているためだと思います)。しかし、Showを使用すると、メソッドはロールオンします。待つ必要があります。ブール値がオンになるまでThread.Sleepを試しましたが、スレッドも拘束され、ウィンドウが使用できなくなります(.Show()を使用)。
backgroundWorkerを作成しようとしましたが、それでも同じ問題が発生します。
ボタンでコードビハインドを使用できることは理解していますが、[OK]ボタンの場合、viewModelはその状態が有効であることを確認する必要があります。ビューをビューモデルとコンサルトさせることは、MVVMのルーズカップリングスタイルのポイントを打ち負かしますよね?
私はWPFとMVVMをすべて自分で学んでいます。それを正しく行い、実用的な場合は優れた設計原則に固執したいと思います。どうすればいいですか?私は何が間違っているのですか?ありがとう。