私はWPF MVVMが初めてです..WPFのMVVMアプリケーションでの動作の使用法を明確にした人はいますか?. WPF MVVM に Method アクションがあるのに、なぜ Behavior を選択する必要があるのですか?
3 に答える
ビヘイビアーは、要素にアタッチするものであり、アプリケーションがいつ応答するかを指定します。
アクションはビヘイビアにアタッチされ、ビヘイビアがトリガーされたときにアプリケーションが実行する必要があることを定義します。
一見すると、動作はアクションに似ています。つまり、機能の自己完結型の単位です。主な違いは、アクションは呼び出されることを期待しており、呼び出されると、何らかの操作を実行することです。ビヘイビアには呼び出しの概念がありません。代わりに、オブジェクトへのアドオンとして機能します。必要に応じてオブジェクトにアタッチできるオプションの機能です。環境からの刺激に応じて特定のことを行う場合がありますが、ユーザーがこの刺激を制御できるという保証はありません。カスタマイズできるものとできないものを決定するのは行動の作者次第です。
ビヘイビアーを使用すると、複数の関連または依存するアクティビティと状態を単一の再利用可能なユニットにカプセル化できます。
以下を示すWPF のアタッチされた動作の紹介を読むことを強くお勧めします。
- 執着行動とは
- その代替手段は何ですか
- 同様の問題に対する代替ソリューションと比較した場合の利点
要素に添付プロパティを設定して、添付プロパティを公開するクラスから要素にアクセスできるようにするという考え方です。そのクラスが要素にアクセスできるようになると、そのクラスでイベントをフックし、これらのイベントの発生に応答して、通常は実行しないことを要素に実行させることができます。これは、サブクラスを作成して使用するための非常に便利な代替手段であり、非常に XAML に適しています。
上記の記事からの結論:
オブジェクトにイベントをフックし、それが発生したときに何かを実行することは、想像力の限りでは、画期的なイノベーションではありません。その意味で、アタッチされた動作は、同じ古いことを行う別の方法にすぎません。ただし、この手法の重要な点は名前があることです。これはおそらく、あらゆるデザイン パターンの最も重要な側面です。さらに、システムの他の部分を変更することなく、添付されたビヘイビアーを作成し、それらを任意の要素に適用できます。これは、Pascal Binggeli によって提起された問題、およびその他の非常に多くの問題に対する明確な解決策です。ツールボックスに入れておくととても便利なツールです。
MVVM では、ViewModel がコマンドではなくメソッドを公開している場合、View からメソッドを呼び出す必要がある場合があります。振る舞いはこれを可能にします。
「WPF MVVMにメソッドアクションがあります」と述べていますが、私が知る限り、「メソッドアクション」はWPFの一部ではありません。ヘルパー MVVM ライブラリを使用している場合は、メソッドをコマンドにカプセル化できる「メソッド アクション」が提供される場合があります。このような場合、メソッドを使用する MVVM パターンにビヘイビアーは必要ありません。
ただし、動作には MVVM 以外の用途があることに注意してください。