5

私の WPF (4.0) アプリケーションでは、Viewmodel-firstパターンを使用しています。したがって、ビューモデルが最初に作成され、次にデータ テンプレートを使用してビューが作成されます。実際のデモはこちらにあります

ここで、作成されたビュー (コード ビハインド) 内から、viewmodel のプロパティを変更する必要があります。アプローチではView-first、名前付きビューモデル インスタンスにアクセスするだけです。ただし、このViewmodel-firstアプローチではこれが許可されません。ビューモデルはありますが、ビューはそれが何であるかを気にしません。

悪い:

確かに を取得して使用することはできますがDataContext、それによってビューとビューモデルが効果的に結合されます。

private void MyView_Loaded(object sender, RoutedEventArgs e)
{
    this.viewModel = DataContext as MyViewModel;
}

これには推奨されるパターンが必要です。コマンド?メッセージ?助けてください!

Q: アクティブなビューモデルを変更 (プロパティを設定) するにはどうすればよいですか?

4

2 に答える 2

4

Bindings を使用して、View から ViewModel にデータを渡し、ViewModel をアクティブにするコマンドを渡します。

コマンドは、ViewModel でコマンドを実行するためにバインドを使用する必要があります。

ViewModel 間の通信にはメッセージを使用する必要があります。

.

于 2013-01-11T10:46:11.503 に答える
3

そんなことはできません。それ以外の場合、View は View Model を認識します。

この初期化がすべてのビュー モデルで共通である場合は、プロパティ/イベントを定義して、ViewModelBaseこのクラスからすべてのビュー モデルを派生させることができます。

Q: アクティブなビューモデルを変更 (プロパティを設定) するにはどうすればよいですか?

View-ViewModel 通信にはEventAggregatorパターンを使用する必要があります。

お気に入りのMVVM フレームワークと、ほぼすべてのフレームワーク サポートEventAggregator(またはMessageBusまたはEnterprise Bus) を使用できます。

于 2013-01-11T10:46:52.297 に答える