私はこれらのアプローチの間にいくつかの違いを見つけようとしています。ビヘイビアーが使用され、アタッチされたプロパティで同じ機能を実行できない状況はありますか?
4 に答える
いいえ。動作は基本的に、アタッチされたプロパティに加えて、はるかに優れた抽象化です。
を使用Behavior<T>
すると、直接アクセスAssociatedObject
できるほか、実行時にビヘイビアーを簡単にアタッチおよびデタッチすることができます。
アタッチされたプロパティを使用してこれを行うこともできますが、多くの余分な配管を追加する必要があります。
私はビヘイビアーを使用して、目に見える変更を加える機能を追加する傾向があります。添付プロパティを使用してオブジェクトに追加情報を追加し、その後他のオブジェクトで使用します。
たとえば、Grid.Rowは、ターゲットではなくグリッドによって使用されるため、適切なアタッチプロパティになります。一方、オートコレクトはオブジェクトに目に見える変更を加えるため、適切な動作をします。
動作は、添付されたプロパティに基づいています。つまり、特定の動作が見つからない場合は、Blendが提供する動作フレームワークに基づいて、または独自のAPを作成することにより、独自の動作を作成します...
私はいつも、行動は付随する特性の力の素晴らしい証拠だと思っていました。あなたが彼らと一緒に得ることができるものはただ信じられないほどです。
これは答えではありません。しかし、私がこのトピックで見つけることができる最良の説明 https://web.archive.org/web/20180208143035/http://briannoyesblog.azurewebsites.net/2012/12/20/attached-behaviors-vs-attached-properties- vs-blend-behaviors /
Brian Noyesは、彼の記事で、各概念の違いを明確に説明しています。