0

対応するウィンドウを開いたときに、プリズムの ViewModelLocator によって作成された ChildViewModel インスタンスを識別する方法はありますか?

MasterViewModel からのパラメーターに基づいて、ChildViewModel がそのデータをロードする必要があることをトリガーしたいと思います。

コードでMasterViewModelは、 in には、イベントを発行して新しい子ウィンドウを開くことを要求するICommandin a があり、対応するサブスクライバーがあります。

public ICommand OpenNewChildWindow()
{
    Publish(new OpenNewChildWindowPubSubEvent());

    // Maybe I can publish a new PubSubEvent here
    // but how can I target just the recently created ChildViewModel?
}

MasterViewModelは UI 実装について何も知らないことに注意してください。

サブスクライバーは、渡されたビューモデルに対応するビュー (この例ではウィンドウ) を基本的に解決するShowWindowカスタムのメソッドを呼び出します。WindowManager

public void ShowWindow(Type viewModelType)
{
   Type view = ResolveView(viewModelType);
   Window w = (Window)Activator.CreateInstance(view);
   w.Show();
}

適切なウィンドウの xaml

ViewModelLocator.AutoWireViewModel="True"
4

1 に答える 1