DataTrigger vs数据绑定与转换器性能明智

Fla*_*ack 18 data-binding wpf triggers

我为网格定义了大量样式(基于状态的单元格颜色等).现在我使用DataTriggers设置适当的颜色.我希望改善我的应用程序的性能,并认为大量的样式可能导致速度减慢(由于数据不断变化和需要重新计算/刷新的样式).使用转换器而不是DataTriggers进行数据绑定是否更好?

如果可以使用任何一种方法实现目标,那么是否有任何性能差异?我不熟悉幕后发生的事情所以我不能确定.

Jay*_*Jay 15

Hanselminutes播客的这一集中,嘉宾Laurent Bugnion(MVVM Light的创建者)描述了与使用转换器相关的性能损失.他表示在桌面应用程序中几乎总是可以忽略不计,但在WP7应用程序中,建议视图模型直接暴露诸如画笔之类的东西,而不是严重依赖转换器,特别是在处理列表虚拟化时,在这种情况下滚动会导致很多调用转换.

在您的方案中可能会发生类似的事情,只是给定了触发器的数量(或者如果您进行了切换,则转换).

作为概念证明,您可以考虑将视图模型包装在"WPF Viewmodel"中,该类型公开颜色和其他WPF特定值本身,而不是某些值,运行时调用触发器可以确定颜色和IValueConverters.然后,您将能够直接绑定到它,并且既不使用触发器也不使用转换器.我很想听听结果.