0

私は現在、3 つのかなり単純化されたビュー モデルを持つ 1 つのビューを持っています。この議論のために、3 つのビュー モデルのうちの 2 つに焦点を当てます。

ビューは、User Management ユーザー コントロールです。これには、UserListViewModel に設定された ItemsSource バインディングを持つ DataGrid が含まれています。このビュー モデルは、データ グリッドにユーザー情報を表示するだけです。

ユーザー管理ビューには、新しいユーザーを追加するボタンやユーザーを削除するボタンなど、その他のコントロールも含まれています。これらのボタンは現在、UserManagementViewModel という 2 番目のビュー モデルにバインドされています。たとえば、[削除] ボタンは、UserManagementViewModel の RemoveUser メソッドを正常に呼び出します。

私の質問は、XAML 経由で (コード ビハインドが嫌いなので)、DataGrid (UserListViewModel にバインドされている) の SelectedItem プロパティを UserManagementViewModel の RemoveUser メソッド呼び出しに渡すにはどうすればよいですか? MVVM デザイン パターンでは、私のビュー モデルは必要な情報を取得するためにビューを調べることができないため、バインディングを介してその情報をメソッドに渡す方法が必要であることに気付きました。

同様の機能を実行するための XAML コード例 (またはその方法を示すリンク) を歓迎します。助けてくれてありがとう!

4

2 に答える 2

0

あなたが求めているのは、データグリッドからそのような情報をルーティングできるデータグリッドのselecteditemにバインドされたコマンドターゲットでコマンドを実行していると思います。ボタンが押されたときに言います。

MSDN のコマンドの概要を参照してください

于 2013-06-28T02:06:46.493 に答える
0

コマンドパラメータを使用するだけです

 <Button Command="{Binding RemoveCommand} CommandParameter="{Binding Elementname=gridUser, Path=SelectedItem}" />

または UserManagementViewModel が UserListViewModel にアクセスできる場合は、commandparameter のないコマンドが必要で、UserListViewModel インスタンスの SelectedUser プロパティを使用するだけです。

 public void ExecuteRemove()
 {
    var userToRemove = this._myUserListViewModelinstance.SelectedUser;
    ...
 }
于 2013-06-28T09:25:22.707 に答える