ボタンのCommandParamで特定のビューモデルオブジェクトを渡す方法は?

button data-binding mvvm routed-commands wpf

私はMaster-Detail UIパターンを使った簡単なWPFプログラムを持っています。そこではDetailはMasterペインでコレクションの現在選択されている項目を表示します。 私はMVVMを使用しています、そして各XAMLページはそれがDataContextとして設定されているViewModelオブジェクトによって支えられています。

それでは、マスターペインにDELETEボタンを追加して、アイテムのマスターリストから削除します。 しかし、現在選択されている項目のビューモデルオブジェクトをボタンCommandParameterとしてルーティングされたコマンドハンドラコードに渡す方法を理解することはできません。

事前にポインタをありがとう。

マイク

  3  0


ベストアンサー

Paulが示したこととよく似たことは、ビューモデルがどの項目が現在選択されているかを知る場所です。 すなわち

パブリッククラスMyVM {public ObservableCollection MyCollection {get;}セット; } public MyObject CurrentItem {get;}セット; }}

あなたのXAMLは単純になることができます

CommandParameter = "{Binding Path = CurrentItem}"

選択したときにマスターペインでCurrentItemプロパティが設定されている限り、コマンドでCurrentItemプロパティをコマンドパラメータとして設定できます。

2


1つのオプションは、ビューモデルへの参照を使用して各コマンドを作成し、現在選択されている項目にバインドされているビューモデルにプロパティを作成することです。 これにより、選択した項目をパラメータとして渡す必要がなくなります。コマンドはVMからそれを取得できます。 これがあなたの状況に適していない場合は、選択した項目を次のように渡すことができます。

listBox_はSelectorから派生するコントロールです。

それが役立つことを願っています、

ポール

1


タイトルとURLをコピーしました