14

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

4

3 回答 3

11

如果您从事 TDD 开发,那么使用转换器将是更好的选择。

如果没有要应用的复杂业务逻辑或自定义逻辑,则选择触发器。关于转换器的另一件事是,根据 Laurent Bugnion(MVVM Light 的创建者)的说法,使用转换器会降低性能。

您可以从这篇文章中看到有关性能影响的更多见解。DataTrigger 与数据绑定与转换器性能明智

您还可以从这篇文章中获得有关何时使用触发器以及何时使用转换器的更多详细信息。 我应该使用 WPF 转换器还是触发器?

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

于 2013-10-19T14:59:13.827 回答
4

对于类似类型的输出,TriggersConverter. 虽然,conveters在您希望开发为 TDD 的地方是可取的,因为您可以为转换器代码编写单元测试。 Converters可用于编写有时使用触发器无法实现的复杂转换。对于复杂Converters的转换可以减少代码而不是编写一系列的Triggers.

于 2013-10-19T13:21:15.930 回答
1

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

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

所以简而言之,触发器只能执行单向操作,而转换器可以执行双向操作

于 2013-10-20T06:12:48.793 回答