WPF触发器 VS 转换器

15

从性能方面来看,使用哪个更好? 与触发器相比,转换器的限制以及反之。 我应该限制使用转换器吗,因为它可能导致类爆炸?

3个回答

12
如果您从事TDD开发,使用转换器会是更好的选择。如果没有复杂的业务逻辑或自定义逻辑需要应用,则可以使用触发器。关于转换器,还有一件事情是,根据MVVM Light的创建者Laurent Bugnion所说,使用转换器会带来性能损失。您可以在此帖子中了解有关性能损失的更多见解。 DataTrigger vs databinding with converter performance wise 对于何时使用触发器和何时使用转换器,您也可以从这个帖子中获得更多详细信息。Should I use WPF converter or trigger? 决策可以基于您正在遵循或将要遵循的开发方法进行。我大多数时候喜欢将您的视图模型包装在“WPF视图模型”概念中。

5
对于类似的输出,与Converter相比,Triggers在性能方面更好。然而,在您希望进行TDD开发时,建议使用Converters,因为您可以为转换代码编写单元测试。Converters可用于编写复杂的转换,有时无法使用Triggers实现。对于复杂的转换,Converters可以减少代码量,而不是编写一系列的Triggers

你的回答很好,但请添加像“复杂转换”这样的示例。这会有所帮助。 - R15

1
在大多数情况下,触发器可以执行与任何转换器相同的工作,但是转换器可以具有自定义/业务逻辑。
触发器的一个限制是,数据触发器中的设置器只能更改 UI 元素的属性;因此,您不能使用触发器更新 ViewModel 属性,这就是转换器获胜的地方,记住 ConvertBack 方法。
简而言之,触发器只能执行单向操作,而转换器可以执行双向操作。

8
有趣的是,这个答案几乎与另一个答案完全相同。 - superjos
7
哇,它又出现在这里了:http://stackoverflow.com/questions/24607952/wpf-xaml-datatriggers-or-valueconverters-best-practice - Matt Becker

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