触发器和多触发器的性能影响

时间:2013-07-08 15:41:03

标签: c# .net wpf performance

在工作中,出现了一个问题,即在ListBoxItem ControlTemplate中使用MultiTrigger会对性能产生影响。

情况有点像这样:我们为ListBox控件定制了一个样式,它定义了所选ListBoxItem的动画和颜色。出现此问题是因为禁用ListBox时,我们不希望所选的ListBoxItem显示所选的“背景”突出显示。这导致我们在ListBoxItems的ControlTemplate中添加一组触发器,以在禁用和选择ListBoxItem时禁用此自定义突出显示。这就是产生负面影响的担忧所在:

如果每个ListBoxItem需要检查触发器并激活触发器,如果​​有很多项,这会产生明显的性能影响。这可能是一个问题,因为此代码在较旧的计算机上运行。

1 个答案:

答案 0 :(得分:3)

排名第一的WPF不支持“旧计算机”。

如果您的ListBox是虚拟化的,则为第二个(这是默认行为,除非您通过不使用VirtualizingStackPanel或将ListBox放入无限容器(例如另一个) StackPanelListBoxItems在用户滚动进入视图之前不会被创建,在这种情况下,无论ListBox中有1000000000个项目,只有适合屏幕的项目才会被创建并消耗内存+ CPU。