如何:处理大型 XAML 文件
XAML 能够表示复杂的数据结构。 因此,一些 XAML 文件可能会变得非常大。 例如,向量图像的 XAML 表示形式可能会有几个 MB 大小。 大型 XAML 文件可能会在 适用于 Visual Studio 的 WPF 设计器中产生性能问题。 下列过程可以帮助您处理由大块 XAML 导致的性能问题。
仅限 XAML 视图
在 Visual Studio 中处理大型 XAML 文件时,改进性能的最佳方法就是不在 WPF 设计器中使用设计视图。 在不使用设计视图时,可通过两种方法在 Visual Studio 中编辑 XAML。
第一种方法是关闭设计视图并且仅使用 XAML 视图。 可以通过更改**“文本编辑器”选项来指定 XAML 文件只应当在完整的 XAML 视图中打开。 通过使用此方法,可以获得完全的 XAML 编辑支持、“文档大纲”**窗口和标记导航器。
第二种方法是使用源代码编辑器。 可以使用**“打开方式”对话框,在源代码编辑器中打开 XAML 文件。 这是最轻量的方法,该方法为大型 XAML 文件提供最佳性能。 您将获得完全的 XAML 编辑支持,但是将看不到“文档大纲”**窗口和标记导航器。
在完整的 XAML 视图中打开 XAML 文件
在**“XAML”的“文本编辑器”选项中选中“总是在完整 XAML 视图中打开文档”**选项。 有关更多信息,请参见“选项”对话框 ->“文本编辑器”->“XAML”->“格式设置”。
当您下次打开 XAML 文件时,它将仅在 XAML 视图中打开。
在源代码编辑器中打开 XAML 文件
在**“解决方案资源管理器”**中右击该 XAML 文件将其打开。
从快捷菜单中选择**“打开方式”**。
在**“打开方式”对话框中选择“源代码(文本)编辑器”,然后单击“确定”**。
该 XAML 文件将在代码编辑器中打开。
“设计”视图
可以使用设计视图来处理大块 XAML,但可能会遇到性能问题。 下面的建议可以帮助您改进性能。
改进在设计视图中处理大块 XAML 时的性能
将大块 XAML 移到一个单独的 UserControl 中。 通过使用此方法,可以将大型 XAML 文件添加到设计图面上,而不会对性能造成太大影响。
将大块 XAML 移到一个 XAML 资源文件中。 如果此资源文件与自定义控件相关联,则大型 XAML 文件将仅在设计器打开自定义控件时加载。
重新构造 XAML 以最小化包括大块 XAML 的更新。
下面的代码示例说明一个 Canvas 元素,该元素中包含一个描述图像的大块 XAML。 更改该元素的某个同级按钮控件会强制更新父网格及其所有的子级。 更新具有大块 XAML 的 Canvas 元素可能会降低性能。
<Window x:Class="WpfApplication1.MainWindow" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="300" Width="300"> <Grid> <Canvas> <!-- Many paths describing an image. --> </Canvas> <Button /> <Button /> <Button /> </Grid> </Window>
下面的代码演示如何重新构造上面的 XAML 来避免性能问题。
<Window x:Class="WpfApplication2.MainWindow" xmlns="https://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="https://schemas.microsoft.com/winfx/2006/xaml" Title="MainWindow" Height="300" Width="300"> <Grid> <Canvas> <!-- Many paths describing an image. --> </Canvas> <Grid> <Button /> <Button /> <Button /> </Grid> </Grid> </Window>
请参见
参考
“选项”对话框 ->“文本编辑器”->“XAML”->“格式设置”
概念
WPF 设计器和 Silverlight Designer 加载失败疑难解答