私の名前はスペインのJesúsです。私は.NETの開発者です。数日前にこの素晴らしいWebを発見しました。MVVMのパターンに関する質問があります
MVVMパターンについていくつか質問があります。回答できる場合は嬉しく思います。
私は3ヶ月前にWPFを使い始めました。私はMVPパターンを学びました。
MVPはとても良いアプリケーションです。
私はどこでもMVVMを見始めましたが、誰もが自分の方法でパターンを使用しています。
すべてのブロガーはWPFのブログでMVVMについて話していますが、実装はすべて個別です。
私は今CodePlexでMVVMツールキットを使用する実装に焦点を当てていますが、質問があり、あまり情報を見つけることができません。
MVVMはMVPのバリエーションだと思います。
MVPでは、すべてのビューにビューのジョブを実行するプレゼンターがあります。
MVVMでは、これは同じことですが、できる限りコマンドを使用しています。
また、イベントが必要な場合は、MVPと似ています。イベントを発表者/ View-Modelに委譲します。つまり、ビューの仕事ではない場合(UIの更新など)です。
一方、View-ModelにはViewリファレンスがありませんので、データバインディングをより強くしなければなりません。
DelegateCommandsを使用する必要があります(これはRelayCommandsと同じものです)。
質問... 2つのビュー/ユーザーコントロールで同じView-Modelを使用するのは安全ですか?
ああ...私はMVVMをプレイしているときに昨日問題に遭遇しました。
私はキーバインディングの事のために私のコマンドのCommandReference
を作成し、私は私のボタンのコマンドプロパティにこの参照を割り当てられ、よく、CanExecuted
が最初に働いたがCanExecuted
は本当だったとき、それはIsEnabled
プロパティを更新しませんでした。私は、コマンドを直接ボタンにバインドし、参照を使用しないことで修正しました。問題は、なぜオブジェクトに参照をリンクするコードがあり、他のコードが直接コマンドをバインドするのはなぜですか?
MVVMに関連するものは何ですか? (私は昨日付けられた行動と呼ばれるものを見ましたが、私はそれが何であるか分かりません)。
私はMVPを使用して開発したメモタッキングアプリを書き換えていますが、現在はMVVMを使用しています。私はイベントをDelegateCommandを使って置き換え、View-Modelでビューの参照を取り除きます。MVVMの例はMVPによく似ているので、それはすべてです。
このパターンで私が持っているすべての誤解を指摘していただければ幸いです。
はありがとう、将来的に、私は次のMVVM初心者:)
偉大な応答。私が追加する唯一の強調点は、WPFでのデータバインディングの重要性(そして遍在性)を過小評価しないことです。ビューをVM/PMに宣言的にバインドすることは、パターンを単に動作させるものです。 – micahtan
マイケルありがとう。私はあまりにも多くのことを言う必要はありません。あなたは答えが非特定の質問に非常に良いです:) 私は理解を深めるためにそのリンクをチェックします。一方、2つ以上のビューにリンクされたViewModelでより多くの意見が必要です。 もう一度ありがとうございます。 –
Jesúsは、ビューあたり約1つのViewModelのことは純粋に私の意見です。それは私の経験に基づいて賢明だと思う。あなたがそれらを再利用することが理にかなっているなら、あなたは(常にあなたのために働くものを)行うべきです。残念なことに、私の意見では、UIパターンの読み方はあまりありません。 UIデザインの微妙さを知るには、実際に経験が唯一の良い方法です。私はあなたにポイントする良い本を持っていたらいいのに、まだ見つけていない。ごめんなさい。 –