创建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中。
创建一到两次控件并不是什么大不了的事,但是如果我在每个UserControl中都有一个具有可视化状态和绑定的大型可视化树,并且我要在每个应用程序生命周期中多次创建它,那么使用C#构建可视化控件以提高性能是有意义的。
所以,我的问题是::
解析器/框架是否“记住”XAML文件并避免在后续调用时再次解析XAML文件?也就是说,它是否创建了XAML的二进制表示,这样就不必再读一遍文本了?
发布于 2012-11-21 01:10:55
据我理解,XAML被编译成二进制形式,作为应用程序中的资源。运行时不必解析.xaml文件的文本,就像它不必解析.cs代码文件一样。
实例化用XAML声明的类的性能应该与在代码中创建类一样。
发布于 2013-09-08 22:25:20
Windows8.1 xaml最终添加了XAML二进制格式:)
XAML二进制格式:最终签名的appx将不再包含基于文本的标记,因为它将被转换为二进制。
https://stackoverflow.com/questions/13484621
复制相似问题