WPFおよびSilverlightコマンドの実装は、MV-VM(MVP)パターンでは役に立たないのですか?
-
22-08-2019 - |
質問
私の無知を許してください、私は最近Silverlightでコーディングを始めました。
シルバーライトにコマンドパターンを実装して壁にぶつかりました。彼らはコマンドが素晴らしいと言います。なぜなら、あなたはそれらをXAMLに書き込むことができるので、あなたはあなたのコードビハインドをきれいに保つことができます、またあなたはあなたのビューとあなたのビューモデルの間にゆるい結合を持っています、なぜならビューのビューモデルへの直接的な参照がないからです。
コードビハインドをきれいに保つことはできません, 、1つのコマンドのみをコントロールにバインドできるため、バインドするとコマンドを発射するイベントを決定する必要があるためです。コントロールに30のイベントがある場合、指揮するために1つを選択する必要があります。他の29は、背後にあるコードからイベントハンドラーから他のコマンドを実行します。
緩和カップリングは、依存関係の注入によってより簡単に実現できます, 、コマンドは、余分なものを何も与えない無駄な間接層を追加します。コードを維持するのが少し難しくなります。インターフェイスに対してプログラミングしていて、どのメソッドが呼び出されるかを正確に確認するとき、コードを正確に確認するとき、そしてコマンド定義とViewModelの間でジャンプし続ける必要があるときに簡単に維持できます。
私は何かを逃しましたか、それともコマンドは実際にビューモデルの相互作用に使用されることを意図していませんか?
次の質問をご覧ください。これが私がコマンドですべての誇大広告を得ることができない理由です:
SilverlightでMVVMを使用してコマンドパターンを使用したコントロールごとの複数のイベントをどのように処理する必要がありますか?
解決
プリズムを見てください(http://prism.codeplex.com)およびそれらのDelegateCommand <>インフラストラクチャ。 SilverlightとWPFがViewModel(またはプレゼンター)にコマンドを作成し、直接バインドするための優れたソリューションです。また、Silverlight 3では、動作はこの同じXAMLベースの構文の一部を提供できます。
他のヒント
SL 2.0はWPFほど強力ではないので、背後にコードを書く必要があります:-(。
MVVMとSLに関するこの記事を読んだかどうかはわかりませんが、SLのコマンドの制限について語っています。
行動パターンが添付されているイベントハンドラーをだましてしまうと思います。詳細については、次のURLをご覧ください。