【发布时间】:2013-07-08 15:41:02
【问题描述】:
在工作中,出现了一个关于在 ListBoxItem ControlTemplate 中使用 MultiTrigger 对性能的影响的问题。
情况有点像这样:我们有一个 ListBox 控件的自定义样式,它定义了选定 ListBoxItem 的动画和颜色。出现问题是因为当 ListBox 被禁用时,我们不希望选定的 ListBoxItem 显示选定的“背景”突出显示。这导致我们在 ListBoxItems 的 ControlTemplate 中添加一组触发器,以在禁用和选择 ListBoxItem 时禁用此自定义突出显示。这就是对负面性能影响的担忧的根源:
如果每个 ListBoxItem 都需要检查触发器并激活触发器,如果有很多项目,这会产生明显的性能影响。这可能是个问题,因为此代码在旧计算机上运行。
【问题讨论】:
-
您是否在使用以下任何一种:MVVM、MVC、MVP?
-
不应该——触发器通常是简单的比较,除非你有一个非常昂贵的转换器。另外,应该在列表框上启用虚拟化,使触发器仅对可见项目有效。分析您的代码,如果您在使用 WPF 时遇到性能问题,则触发器可能不是原因。
-
@oleksii 此应用程序使用 MVVM。
-
@JulienLebosquain 在默认情况下始终启用虚拟化。
-
@AlexanderVentura 请看 HighCore 的回答。
标签: c# .net wpf performance