我正在开发一个以 WinForm 开始的应用程序,但现在它正在使用带有 UI 的 WPF 窗口。交互效果很好,但是当 WPF 窗口首次显示时,它们需要很长时间(大约 1-3 秒)才能显示出来。以至于有些人怀疑应用程序是否崩溃(直到内容显示)。第二次调用相同的窗口时,它们会很快出现。我需要他们第一次快速上来。
我正在使用位于资源文件夹中的 XAML 样式和控件模板。然后,在 WPF 窗口的 XAML 中,我将它们合并到 Windows 资源字典中。那些(在 VS 2010 中)的构建操作需要设置为“资源”。最好我想将它们保存在单独的文件中以便于维护。据我了解,如果构建操作是“Page”,XAML 将被预编译并且加载速度应该更快,但如果我将其设置为 Page,我无法将它们合并到资源字典中。有办法解决吗?
我对 WPF 的这一部分相当陌生,到目前为止,我的互联网搜索还没有成功。
需要明确的是:我不是在谈论嵌入在 WinForms 中的 WPF 控件。我说的是从 WinForm 上下文生成的完全独立的 WPF 窗口。
有没有办法预编译整个应用程序或至少所有 XAML(都是静态的,没有动态 XAML)?
提前致谢!
编辑:用户界面无论如何都不重。有问题的按钮有 5 到 20 个按钮和通常的容器(基本上是一个带有 1 或 2 个堆栈面板的网格)。
更新:我尝试使用“NGEN install appname”进行预编译 - 对 WPF 窗口加载没有影响。
我将所有资源和模板都包含在了 window.xaml 中——没有效果。(window.xaml 是预编译的)
我在这里发现了这篇关于在应用程序加载时进行预抖动的非常有趣的文章:
http://www.codeproject.com/KB/dotnet/pre_JIT.aspx (我使用了 'ittay ophir' 建议的改进)
- 再次:对 WPF 窗口加载没有影响...
加载时间在第一次加载时根本不会改变,但在所有连续加载(加载在 20 毫秒或更短的时间内)时它们会显着减少。
这到底是怎么回事?