1

わかった。Jason Dolingerによる MVVM の最高の紹介ビデオ (WPF を始めようとしているすべての人にお勧めします。1 時間以上の興味深い内容であり、この 1 時間で将来多くの利益が得られることを約束します) を見た後、私は今、次のことに興奮しています。自分のプロジェクトに実装します。

わかった。これは、私のプロジェクトのメイン MDI ウィンドウとして機能する XAML ウィンドウです。ウィンドウに ViewModel を追加し、イベント ハンドラーなどを追加する代わりに、メニュー項目を ViewModel メンバーにバインドするように依頼します。

ここまでは順調ですね。次に、ユーザーによるメニュー項目のクリックを処理するコマンドに実際のコードを記述する必要があります。関連するコマンドに入るとすぐに、自分のコマンドも ViewModel も実際の View クラスや他のビュー/ビューモデルへの参照を持っていないことに気付きます。

私の質問は、コマンドの実行に応じて別のビューをロードするにはどうすればよいですか? すべて ViewModel を通過する必要がありますか、それともコマンド オブジェクトがビューに直接アクセスできるようにする必要がありますか? ここでの標準的な慣行は何ですか?

4

2 に答える 2

0

一般に、(ビューモデルに適切に接続された) ビューをある種の に追加する必要がありますPanel。それをどのように正確に行うかはあなた次第です。

汚い解決策は、どこかからパネルへの参照を取得し、ビューとビューモデルを作成して、ビューをパネルに追加することです。これは機能しますが、コマンドを多くの実装の詳細に結びつけることになり、非常に望ましくありません。

この状況を改善するには、適切な抽象化レイヤーの追加を開始する必要があります。さまざまな MVVM フレームワークがこれをどのように行うかを確認して、何がうまく機能するかを理解することは有益です。たとえば、Prism は領域の概念を使用してこれを行います。

于 2013-02-13T10:40:08.363 に答える
0

このコマンドが行う唯一のことがビューに関連する (他のロジックがない) 場合は、コマンドがビューを持つことができます。それ以外の場合は、コマンドを 2 つのコマンドに分割して、それらを構成します。ドメインに関連するビジネス ロジックが含まれていない限り、ui コマンドを使用してもかまいません。

于 2013-02-13T10:36:23.527 に答える