【发布时间】:2017-10-10 14:59:14
【问题描述】:
为了扩展标题问题,以下是场景:
假设我有一个 UserControl 用于 ListBox 上一长串项目中的主要文本;每个项目都是 ListBox 上的 DataTemplate,其中包含数以万计的项目(注意:列表当然是虚拟化的)。
在这个 UserControl 内部是对它需要的所有资源字典的引用,或者像这样放在 XAML 中:
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
~Various other resource dictionaries~
<ResourceDictionary.MergedDictionaries/>
<ResourceDictionary/>
或者像这样在用户控件后面放入代码:
public override void BeginInit()
{
Resources.MergedDictionaries.Add(new ResourceDictionary().AddResource(~resource dictionary location here~));
base.BeginInit();
}
是否每次在每个列表框项中加载/初始化这些用户控件之一时都会引入这些资源字典,或者编译器是否足够聪明,可以看到它已经拥有字典,并且会放弃花费资源来一遍又一遍地尝试获取相同的东西?
如果前者是真的,它会减慢多少速度?
【问题讨论】:
-
将一些对象放入其中一个字典并计算它被实例化的频率。
标签: c# wpf xaml resourcedictionary