1

誰かがメディエーターパターンが複数のインスタンスでどのように機能するかを説明できますか?

ビュー内の私のコード:

public MyView() {
    Mediator.Register("CloseWindow",()=>Close());
}

およびViewModel内:

public SomeMethod() {
    Mediator.Notify("CloseWindow");
}

これは、ViewとViewModelのペアのインスタンスが1つしかない限り検出されます。

複数のインスタンスでそれを解決するにはどうすればよいですか?

4

2 に答える 2

1

別の解決策を使用します。MyViewは、Closeメソッドを含むインターフェイスIMyViewを実装します。MyViewModelオブジェクトはビューを関連付けるため、インターフェイスを介してCloseメソッドを呼び出すことができます。

具体的な例に興味がある場合は、以下をご覧ください。

WPFアプリケーションフレームワーク(WAF)

于 2009-11-03T20:51:39.133 に答える
0

メディエーターパターンの特定の実装がどのように機能するかはわかりませんが、私の場合は、文字列だけでなく、より多くの情報を送信できます。

例えば:

public MyView() {
    Mediator.Register<CloseWindowMessage>(message =>
    {
        if (message.ViewModel == DataContext) Close();
    });
}    

およびViewModel内:

public SomeMethod() {
    Mediator.Notify(new CloseWindowMessage(this));
}

この例では、ViewModelはそれ自体をパラメーターとしてビューに渡します。ビューは、メッセージがビューモデルから送信されていることを確認できます。

于 2009-11-03T17:15:12.253 に答える