5

MVVMを勉強しようとしているのですが、まだわからないことがあります。

現在、私はこのイベントハンドラーを持っています:

private void Window_Closing(object sender, System.ComponentModel.CancelEventArgs e)
{
    if (MessageBox.Show("Are you sure you want to close this application?", "Close??", MessageBoxButton.YesNo, MessageBoxImage.Question) == MessageBoxResult.No)
    {
        e.Cancel = true;
    }
}

非常に簡単。ただし、このアプリケーションでは MVVM パターンを適用したいと考えています。

このロジックをビュー コードに直接ではなく、ViewModel に配置する必要があるのでしょうか。もしそうなら、どうすればいいですか?

ありがとう

4

1 に答える 1

0

ViewModel で使用でき、View と対話できる独自の ViewsService を使用できます。たとえば、ViewsService.CloseActiveWindow() メソッドを記述できます。この場合、ViewModel から直接 View を操作する必要はありませんが、サービス クラスを介して操作します。

別の方法: グローバル パブリッシュ/サブスクライブ サービスを使用する。ViewModel はイベントを送信し、View はこのイベントをサブスクライブします。複数のウィンドウの場合、ウィンドウがアクティブであることを確認し、アクティブなウィンドウのみを閉じることができます。

于 2012-06-19T14:02:36.590 に答える