2010-12-30 7 views
0

私はCommand-AddCommandを持っており、ユーザーをデータベースに追加する必要があります。 データベースに追加するビジネスロジックは、ViewModelメソッド(Add_to_Db、Delete_from_Db)にあります。 しかし、XAMLからCommandParameterとしてviewmodelを渡さずにviewmodel(すべてのメソッド用)にアクセスするには、コマンド(AddCommand)が必要です。コマンド(ICommandから派生したもの)がビューモデルにアクセスするにはどうすればいいですか

他の情報(UserInfo)をCommandParameterとしてコマンドに渡す必要があります。 コマンドが関連するViewModelにアクセスできる方法は何ですか。

+0

私はあなたの質問を誤解しているはずですが、RelayCommandはViewModelのプロパティではないはずですか?つまり、既にViewModelにアクセスする必要があります.ViewModelでは、UserInfoのような状態を維持できます。 – Mathias

+0

RelayCommandを使用していませんが、通常のコマンドを使用しています。ビューモデルでコマンドを作成するとき、ViewModelのメソッドをコマンドに渡すことはできません(Relayコマンドのコマンドコンストラクタと比較して)。 – Santosh

答えて

0

DelegateCommandを使用してください。

参考文献:

MVVM Infrastructure: DelegateCommand

How to implement a reusable ICommand

あなたが行うすべてのコマンドが実行されたときに実行されます。このDelegateCommandにあなたの方法ViewModelクラスを渡すことです。そうすれば、ViewModelにアクセスできます。そして、再利用可能で広く使われているアプローチでもあります。

+0

DelegateCommand(基本的には任意のメソッドを使用します)を使用したくない場合は、ビューモデルにアクセスする方法は何ですか。 – Santosh

+0

コマンドを委任しない場合は、どのような実装を使用しますか?例を投稿すると、私は他の方法を提案することができます。 – decyclone

+0

私はDelegate Commandがシンプルであることに同意します。しかし、私はちょうどコマンド(ICommandから派生)を追加、削除、ユーザーアクション(ボタンクリック)に基づいてデータを変更してからビジネス操作(eg.add/delete/add)/削除)を使用して、ViewModelの適​​切なメソッド(add/delete/modify)を使用して、ビュー(add/delete)コマンドの。 => 1つの方法は、ViewModelオブジェクトをCommandParamterとして渡すことです。他の方法は、コマンドのexecute()メソッドからviewmodelオブジェクトにアクセスすることです。 – Santosh

関連する問題