1

私は別のビューをセットアップし、そのビューモデルを準備して待っています。RelayCommand が「現在の」ビューモデルに到着します。現在のビューモデルから新しいビューを表示する最良の方法は何ですか?

私は読んでいて、メッセンジャーを使用してビューモデルから???にメッセージを送信する必要があるようです。表示したいビューに関連付けられている新しいビューモデル? しかし、どのようにビューを表示しますか?

また、ビューモデルからビューを閉じることをサポートする方法はありますか? mvvm-light がテーブルに何か余分なものをもたらすのだろうか?

4

1 に答える 1

3

WPF では、ビューを「表示」/「閉じる」ための (すぐに使える) 2 つの方法があります。.Show()1 つ目は、またはメソッドを介して Window または Dialog を表示するだけで、.ShowDialog()メソッドで閉じることができます.Close()。この場合、Messenger前述のように MVVMLight クラスを使用して、分離された方法で表示/終了メッセージをビューに送信できます。これは「閉じる」の例です。

ビューモデルで:

CloseTheView()
{
    Messenger.Default.Send(new CloseTheViewMessage);
}

ビューのコード ビハインドで:

//Constructor
public TheView()
{
    ...
    Messenger.Default.Register<CloseTheViewMessage>( () => this.Close() );
}

ご覧のとおり、これにはコード ビハインド ファイル内のコードが含まれますが、これは 1 行の機能にすぎないため、大したことではありません。

2 つ目の方法は、ナビゲーション フレームワーク(WPF と Silverlight の両方で使用可能) を使用することです。Windowメイン(またはUserControl) である「シェル」を定義し、そのframe中に を配置し、他のビューを から継承させてから、関連付けられた(または直接のもの)Pageのインスタンスを使用して ViewModel からナビゲーションを開始します。ページ自体に関連付けられています)。NavigationServiceFrame

お役に立てれば :)

于 2011-05-04T10:21:17.160 に答える