Я пытаюсь найти некоторые различия между этими подходами. Есть ли какая-либо ситуация, когда используются поведения, и не могут быть реализованы те же функции с прикрепленными свойствами?
Interactivity.Behavior <T> против прикрепленных свойств
Ответ 1
Нет. Поведение в основном является гораздо более хорошей абстракцией поверх прикрепленных свойств.
Используя Behavior<T>
, вы напрямую получаете доступ к AssociatedObject
, а также возможность прикреплять и отключать поведение, легко, во время выполнения.
Вы можете сделать это с помощью прикрепленных свойств, но для этого потребуется добавить много дополнительной сантехники.
Ответ 2
Я стараюсь использовать Behaviors для добавления функциональности, которая делает видимые изменения. В то время как я использую прикрепленные свойства для добавления дополнительной информации к объекту, который впоследствии используется другими объектами.
например. Grid.Row делает хорошее прикрепленное свойство, так как оно используется сеткой, а не целью. С другой стороны, AutoCorrect будет делать хорошее поведение, так как это сделает видимые изменения на объекте.
Ответ 3
Пословицы основаны на прикрепленных свойствах. Это означает, что если вы не можете найти определенное поведение - вы пишете свое собственное, либо на основе структуры behavoirs, предоставляемой Blend, либо создавая собственную AP...
Я всегда, хотя это поведение является большим доказательством силы прикрепленных свойств. Просто невероятно, что с ними можно получить.
Ответ 4
Это не ответ. Но лучшее объяснение, которое я могу найти на эту тему http://briannoyes.net/attached-behaviors-vs-attached-properties-vs-blend-behaviors/
Брайан Нойс в своих статьях четко описывает различия между каждой из концепций.