WPF で EventArgument 情報をビューからビュー モデルに渡すにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/2486025

質問

私のアプリケーションには、次のコレクションにバインドされている ListView コントロールがあります。 カスタムオブジェクト リスト<カスタムオブジェクト>。の カスタムオブジェクト 独立したビューがあります。この ListView には別のビュー モデルがあります。

コレクション List _customobject は、ListView ViewModel クラスに含まれています。

私の質問:

ユーザーが ListView の任意の行をダブルクリックしたときに、カスタム オブジェクトのプロパティを表示するビューを呼び出したいと考えています。ListView のダブルクリック コマンドは、 リストビューダブルクリック ビューモデル内のコマンド。CustomObject は listview ダブルクリック コマンドのイベント引数にあります。これを実現するには、カスタム オブジェクト (またはコレクションからカスタム オブジェクトを取得できるカスタム オブジェクトの一意の ID プロパティ) をコマンド パラメーターとして渡す必要があります。

解決策を教えてください!!

役に立ちましたか?

解決

これを行う最も簡単な方法は、リストにダブルクリックイベントハンドラを追加することです。覚えておいてください:MVVMは、ビューには、コードを意味しません!これは、ビューだけハンドルが懸念を表示することを意味します。あなたは、EventArgsのビューにのみ意味があり、あなたがのViewModelにそれを渡したい場合にのみ関連する情報を渡す必要があることを本当に良い議論を行うことができます。 あなたはViewModelににそれを渡すためにEventArgsからデータを抽出するような何かを持っている場合、それはより良いViewModelに、私見にダウンにEventArgsを渡すよりも許容し、適切である...と。

(私は必ず私はこの点について、いくつかの意見の相違を取得しますだけど、UIの相互作用を扱うことは表示上の問題で、選択肢は行動を書いたり、単一のページに取り組んで単一のコントロールを取得するためのフレームワークを使用している場合、覚えている:。YAGNIとパターンは宗教ではありません)。

(それは良いアイデアかどうについて多くの議論があるが)は、

MVVMフレームワークのいくつかは、あなたがこれを行うことができます。私が覚えていれば特に、 MVVMライトToolkitはサポートドラッグ&ドロップ(に少し前にこれを追加しブログ記事正しく)。

あなたはMVVMフレームワークを使用していない場合は、

、私は複数の場所で同じことをやろうとしていた場合、私はこれを行うことができるようにする行動を書いて巻き取ってきました。この場合、私は通常私がいるEventArgs(すなわち、あなたはおそらく、本当に完全なイベント引数を望んでいないが、あなたはおそらく、アイテムがクリックされた気にし、多分データのいくつかの他のビット)から気に情報を抽出します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top