6

そのため、MVVM の学習中に問題に遭遇しました。TreeView 内のいずれかの TextBlocks をダブルクリックしたときにアクションを実行したい TextBlocks を含む TreeView がありました。私はビヘイビアについて学び始めました。ビヘイビアがどのように実装されているかを示す素晴らしい例がありますが、この例ではビヘイビアが ViewModel にまったく接続されていません。つまり、TextBlock をダブルクリックすると、それをキャッチする Behavior クラスがありますが、アクションを実行するための ViewModel はありません。

誰かが少し時間を取って、これらがどのように結びついているか説明してもらえますか? 私はこの記事を見直していました: http://msdn.microsoft.com/en-us/library/gg430869(v=pandp.40).aspx しかし、探しているものを理解していないようでした。

4

2 に答える 2

9

MVVMの概念は、WPFアプリケーションでデカップリングメカニズムを提供します。これは、xaml.csファイルにコードがないことを意味します。付けられた振る舞いは別物です。MVVMとは関係ありません。

ただし、MVVMを使用できないシナリオがある場合は、たとえば、ダブルクリックでTextBoxのテキストを選択します。これは、テキストボックスに追加する動作です。

xaml.csファイルは再利用できず、緊密に結合されているため、ダブルクリック機能を実装することをお勧めします。

ここで行動が浮かび上がります。TextBoxのビヘイビアーを作成し、アタッチします。これで、この動作を必要な数のコントロールにアタッチできます。

編集:

WPF4.5を使用している場合。イベントのマークアップ拡張機能を探すことができます

アタッチされた動作でそれを実行したい場合。Command依存関係プロパティを持つダブルクリックイベントの添付動作を作成します。ダブルクリックの動作は、添付されたコマンドを上げるだけで、xamlでコマンドをviewmodelにバインドします。これはあなたが知っていると思います。

願わくば、私はあなたのコメントに答えることができます。

于 2013-01-24T02:31:30.783 に答える