4

创建 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 的二进制表示,因此它不必重新读取文本?

4

2 回答 2

0

Windows 8.1 xaml 终于添加了 XAML 二进制格式 :)

XAML 二进制格式:最终签名的 appx 将不再包含基于文本的标记,因为它将被转换为二进制。

于 2013-09-08T22:25:20.273 回答
0

据我了解,XAML 被编译成二进制形式作为应用程序中的资源。运行时不必解析 .xaml 文件的文本,就像它不必解析您的 .cs 代码文件一样。

实例化使用 XAML 声明的类的性能应该与在代码中创建它的性能相当。

于 2012-11-21T01:10:55.830 回答