私のアプリケーションは、有名な IDialogService のバリアントを使用して、多数の子ビューを作成します。特定のイベントまたは一連のイベントが発生したときに、これらのビューをプログラム ベースでシャットダウンできるようにする必要があります。
まず、Views の Close メソッドをどのように公開すればよいかを念頭に置いてください。
- ビューの DataContext (ViewModel) を破棄する必要があり、
- View.Dispatcher.InvokeShutdown は、閉じているビューごとに呼び出す必要があります。
これまでのところ、Closing イベントにフックしてクリーンアップを処理するためのビヘイビアと、ViewModel の次のようなアクションが混在しています。
vm.OnCloseAction = ()=> view.Close();
ViewModel から View を実際に閉じる処理を行います。
ただし、これは私にとって特にエレガントではありません。誰かが他のアイデアや代替アプローチを持っていますか?