交互性。行为<T>与附加属性

29

我正在尝试找出这些方法之间的区别。在任何情况下,行为是被使用的,并且无法使用附加属性完成相同的功能吗?

4个回答

43

不是的。行为基本上只是在附加属性之上提供了更好的抽象。

通过使用Behavior<T>,您可以直接访问AssociatedObject,并能够在运行时轻松地附加和分离行为。

使用附加属性也可以实现此功能,但需要添加大量额外的代码。


2
然而,使用样式添加它们变得困难。 - Stephen Drew
2
实际上,使用附加属性有一些限制...例如,可以添加多个相同行为的实例,但只能设置一次附加属性。另一方面,附加属性具有更短的语法,并且可以在样式中使用,这在行为中很难实现。 - Thomas Levesque
1
@ThomasLevesque 你也可以定义一个附加属性,将行为添加到给定的UI元素中,并在样式中设置该属性.. 哈哈 =) - Federico Berasategui

8

我倾向于使用行为来添加功能,从而产生可见变化。而我使用附加属性来向对象添加其他信息,随后被其他对象使用。

例如,Grid.Row就是一个很好的附加属性,因为它被Grid使用而不是目标对象。另一方面,自动校正会成为一个很好的行为,因为这将在对象上产生可见变化。


4

行为是基于附加属性的。这意味着如果您找不到特定的行为 - 您可以编写自己的行为,可以基于Blend提供的行为框架或创建您自己的附加属性...

我一直认为行为是附加属性强大功能的最好证明。只需使用它们,您就可以获得惊人的效果。


1

提供的链接已经失效。 - Eduardo Brites
1
这是可用的链接:http://briannoyesblog.azurewebsites.net/2012/12/20/attached-behaviors-vs-attached-properties-vs-blend-behaviors/ - lukeguy
我不知道他为什么删除了它。https://web.archive.org/web/20180208143035/http://briannoyesblog.azurewebsites.net/2012/12/20/attached-behaviors-vs-attached-properties-vs-blend-behaviors/ - Kirk Kuykendall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接