创建 UserControls 时,看起来每次初始化控件时都会解析 XAML。
例如,当我创建一个 UserControl 时,会自动生成代码来初始化如下所示的组件:
public void InitializeComponent()
{
if (_contentLoaded)
return;
_contentLoaded = true;
global::Windows.UI.Xaml.Application.LoadComponent(this, new global::System.Uri("ms-appx:///Views/MyView.xaml"), global::Windows.UI.Xaml.Controls.Primitives.ComponentResourceLocation.Application);
}
这也存在于 Silverlight 中。
创建一次或两次控件并不是什么大问题,但是如果我在每个带有 Visual-States 和绑定的 UserControl 中都有一个大型可视化树,并且我在每个应用程序生命周期中创建了很多次,那么构建可视化将是有意义的使用 C# 控制以提高性能。
所以,我的问题是:
解析器/框架是否“记住” XAML 文件并避免在后续调用中再次重新解析它?也就是说,它是否创建了 XAML 的二进制表示,因此它不必重新读取文本?