WPF预编译WinForm应用程序中的资源?

时间:2011-03-18 01:48:56

标签: wpf winforms xaml precompiled

我正在开发一个以WinForm开头的应用程序,但它现在正在使用带有UI的WPF窗口。交互工作都很漂亮但是当首次显示WPF窗口时,它们需要很长时间(大约1-3秒)才能显示出来。很长一段时间,有些人想知道应用程序是否崩溃(直到内容显示)。第二次调用相同的窗口时,它们会很快出现。我需要他们第一次快速上来。

我正在使用资源文件夹中作为XAML定位的样式和控件模板。在WPF窗口的XAML中,我将它们合并到windows资源字典中。那些(在VS 2010中)的构建操作需要设置为“资源”。 我希望将它们保存在单独的文件中以便于维护。 据我所知,如果构建操作是“页面”,则XAML将被预编译并且应该加载更快但如果我将其设置为页面,则无法将它们合并到资源字典中。有办法吗?

我对WPF的这一部分还不熟悉,到目前为止,我的互联网搜索还没有成功。

要明确:我不是在谈论嵌入在WinForms中的WPF控件。我说的是从WinForm上下文中生成的完全独立的WPF窗口。

有没有办法预编译整个应用程序或至少所有XAML(它都是静态的,没有动态XAML)?

提前致谢!

编辑:UI无论如何都不重。有问题的按钮有5到20个按钮和通常的容器(基本上是带有1或2个堆叠面板的网格)。


更新: 我尝试使用“NGEN安装appname”进行预编译 - 对WPF窗口加载没有影响。

我将所有资源和模板都包含在window.xaml中 - 没有效果。 (window.xaml是预编译的)

我发现这篇非常有趣的文章是关于预先加载app app:

http://www.codeproject.com/KB/dotnet/pre_JIT.aspx (我使用'ittay ophir'建议的改进)

  • 再次:对WPF窗口加载没有影响......

加载时间在第一次加载时不会改变,但在所有连续加载(20ms或更短的加载)中它们会显着降低。

这到底是怎么回事?

1 个答案:

答案 0 :(得分:0)

如何使用XamlReader.LoadAsync方法异步加载XAML?