WPF触发VS Converter

时间:2013-10-19 13:09:48

标签: wpf c#-4.0 triggers converter

哪个更好地使用性能? 与触发器相比,转换器的限制与反之亦然。 我应该限制转换器的使用,因为它会导致类爆炸吗?

3 个答案:

答案 0 :(得分:7)

如果您正在进行TDD开发,那么选择转换器将是更好的选择。

如果没有要应用的复杂业务逻辑或自定义逻辑,请转到触发器。关于转换器的另一个问题是,根据Laurent Bugnion(MVVM Light的创建者)使用转换器会产生性能损失。

您可以从这篇文章中看到有关性能影响的更多信息。 DataTrigger vs databinding with converter performance wise

您可以获得有关何时使用触发器以及何时使用此帖子中的转换器的更多详细信息。 Should I use WPF converter or trigger?

可以根据您要遵循或将要遵循的开发方法做出决定。我更喜欢在大多数情况下将视图模型包装在“WPF Viewmodel”概念中。

答案 1 :(得分:2)

对于类似类型的输出,与Triggers相比,Converter的性能更好。 虽然,conveters建议您将开发设置为TDD,因为您可以为转换器代码编写单元测试。 Converters可用于编写有时使用触发器无法实现的复杂转换。 对于复杂的转化,Converters可以减少代码,而不是编写Triggers系列。

答案 2 :(得分:0)

在大多数情况下,触发器可以执行与任何转换器相同的工作,但转换器可以具有自定义/业务逻辑。

触发器的一个限制是DataTriggers中的Setter只能更改UI元素的属性;所以,你不能用触发器更新你的ViewModels属性,那就是转换器获胜的地方,请记住ConvertBack方法。

因此,简而言之,触发器只能执行OneWay操作,而转换器可以执行TwoWay操作