避免每次在 ApplyTemplate() 时加载 XAML

Jef*_*hao 5 wpf xaml controltemplate

我正在研究 WPF 网格的性能改进,并发现ApplyTemplate()对单元格的调用消耗了相当多的资源。每次我们创建一个单元格并将其应用ControlTemplate到它时,它会再次加载 XAML,尽管我认为这应该为同一个模板缓存。

分析结果

这样可以节省一次又一次加载 XMAL 的成本吗?

另外,是否可以构建一个ControlTemplate不依赖于 XAML 的,但我们可以通过编程方式设置可视化树来提高性能?

更新:

我尝试使用由代码创建的模板并完全由FrameworkElementFactory. 分析结果表明我们没有通过这种方法获得性能提升。

使用 FrameworkElementFactory 分析结果

似乎每次ApplyTemplate调用中的 XAML 解析成本都不高,但可视化树实例化花费了大部分时间。