我试图找出这些方法之间的一些差异。是否存在使用行为并且无法使用附加属性执行相同功能的情况?
答案 0 :(得分:39)
没有。基于附加属性,行为基本上只是一个更好的抽象。
通过使用Behavior<T>
,您可以直接访问AssociatedObject
,以及在运行时轻松附加和分离行为的功能。
您可以使用附加属性执行此操作,但这需要添加大量额外的管道。
答案 1 :(得分:7)
我倾向于使用“行为”来添加实现可见更改的功能。而我使用附加属性将其他信息添加到随后由其他对象使用的对象。
E.g。 Grid.Row是一个很好的附加属性,因为Grid使用它而不是目标。另一方面,自动更正会产生良好的行为,因为这将对对象进行可见的更改。
答案 2 :(得分:2)
Behviors基于附加属性。这意味着如果你找不到具体的行为 - 你可以根据Blend提供的行为框架或创建自己的AP来编写自己的行为......
我总是认为这种行为是附加财产权力的重要证据。只是令人难以置信的是你可以得到它们。
答案 3 :(得分:0)
这不是答案。但是我可以在这个主题上找到最好的解释 http://briannoyesblog.azurewebsites.net/2012/12/20/attached-behaviors-vs-attached-properties-vs-blend-behaviors/
Brian Noyes在他的文章中清楚地描述了每个概念之间的差异。