2011-04-01 25 views
15

我有大量的样式为我的网格定义(基于状态的单元格颜色等)。现在我使用DataTriggers来设置适当的颜色。我正在寻求改进我的应用程序的性能,并认为大量的样式可能会导致速度减慢(由于数据不断变化,样式需要重新计算/刷新)。使用转换器而不是DataTriggers进行数据绑定会更好吗?DataTrigger与数据绑定与转换器性能明智

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

回答

13

this episode of the Hanselminutes podcast,客户Laurent Bugnion(MVVM Light的创建者)介绍说,使用转换器会带来性能上的下降。他表示,在桌面应用程序中它几乎总是微不足道,但在WP7应用程序中,建议视图模型直接暴露诸如画笔之类的东西,而不是严重依赖转换器,尤其是在处理列表虚拟化时,在这种情况下,滚动会导致很多转换的调用。

在您的场景中发生类似的事情是可能的,只要给出触发器的数量(或者如果您进行了该转换,就会进行转换)。作为一个概念证明,你可能会考虑将你的视图模型包装在一个“WPF视图模型”中,该视图模型本身公开了颜色和其他WPF特定的值,而不是某些值,颜色可以由运行时调用触发器和IValueConverters。然后你就可以直接绑定到那个,既不使用触发器也不使用转换器。我有兴趣听到结果。