2011-03-18 38 views
4

我正在開發一個作爲WinForm的應用程序,但它現在使用帶有UI的WPF窗口。交互操作非常漂亮,但當WPF窗口首次顯示時,需要很長時間(大約1-3秒)才能顯示。只要有人懷疑應用程序是否已經崩潰(直到內容顯示)。第二次調用相同的窗口時,它們很快出現。我需要他們在第一時間迅速出現。WPF預編譯的WinForm應用程序中的資源?

我正在使用的樣式和位於如XAML的資源文件夾的控制模板。在WPF窗口的XAML中,我將它們合併到Windows資源字典中。這些(在VS 2010中)的構建操作需要設置爲「資源」。 最好我想將它們放在單獨的文件中以便於維護。 據我瞭解,如果構建操作是「頁面」XAML將被預編譯,應加載更快,但如果我將它設置爲頁面,我不能將它們合併到資源字典中。有沒有辦法解決這個問題?

我是相當新的WPF的這一部分,到目前爲止,我的互聯網搜索一直沒有成功。

需要明確的是:我不是在談論WPF控件嵌入的WinForms。我正在討論從WinForm上下文中產生的完全獨立的WPF窗口。

有沒有辦法預編譯整個應用程序或至少所有XAML(它是所有靜態的,沒有動態XAML)?

在此先感謝!

編輯:用戶界面是不以任何方式重。有問題的人有5到20個按鈕和通常的容器(基本上是一個帶有1或2個堆疊面板的網格)。


更新: 我試着用 「NGEN安裝應用程序的名字」 預編譯 - 對WPF窗口負荷沒有影響。

我包括所有的資源和模板到window.xaml - 沒有影響。 (window.xaml是預編譯)

,我發現這個約在應用負載這裏預jitting真正有趣的文章:

http://www.codeproject.com/KB/dotnet/pre_JIT.aspx (我使用「ittay阿斐」提出的提高)

  • 再次:在WPF窗口負荷沒有效果...

的加載時間根本不會改變第一次加載,但他們是在所有連續顯著減少負載(20ms或更少的負載)。

這是怎麼回事?

回答

0

如何加載XAML使用異步方法XamlReader.LoadAsync

+0

是啊,我想過這個問題,但到目前爲止,因爲它似乎有繁瑣迴避遠離它。如果我知道這是值得的努力,我會這樣做。你(或其他人)是否嘗試過這種方法並獲得顯着的性能提升? – Harald 2011-03-18 04:52:44

+0

至少你可以顯示加載對話框,直到xaml異步加載,所以它不會出現掛起。 – 2011-03-18 09:00:51

相關問題