2010-10-29 50 views
1

我已經提出了一個應用程序來展示客戶端列表。您可以打開客戶端,並顯示客戶端的詳細信息。正確的窗口設計XAML(性能)

我的應用程序需要相當長的時間才能啓動,所以我想提高啓動性能。

在pseude碼,我的主窗口看起來像這樣

<Window> 
    <c:WelcomeAnimation Visibility="Visible" /> 
    <c:ClientList Visibility="Collapsed" /> 
    <c:ClientDetails Visibility="Collapsed" /> 
</Window> 

現在,顯示在主窗口前,我看到客戶端列表和ClientDetails被intialized。這很耗時,所以我想延遲這個初始化,並在顯示主窗口並運行WelcomeAnimation時執行此操作。

這至少會讓人覺得應用程序啓動速度更快。

問:我在窗口設計中有哪些選擇。我喜歡上面的XAML視圖。當然,我所能做的一切代碼隱藏,所以我的主窗口的XAML將不外乎

<Window /> 

但也許還有更好的,我不知道的選項嗎?

+0

XAML的啓動時間很差 - 您可能無法做到使其更快。這是非常有趣的工作,但.....同時確保你正在測試你的二進制文件的發佈版本......以我的經驗來說,調試XAML版本的啓動時間通常非常差。 – 2010-10-29 14:57:19

回答

0

這取決於。當啓動時間是由於您自己編寫的代碼(例如調用Web服務或從數據庫獲取數據)時,請不要在初始化時執行該代碼,而是啓動後臺線程/ ThreadPool任務並在其中運行代碼。

當啓動時間實際上僅僅是因爲控件被加載(例如,它是一個非常複雜的控件和許多視覺效果)時,您有兩種選擇。要麼放入更換面板而不是控件,並在顯示動畫後填入。第二種選擇是咬一口子彈。

還有一件事要注意。如果啓動時間實際上是由於大量的視覺效果,則初始化將不得不在UI線程上完成,因此加載控件時不會播放動畫。

+0

如何製作「更換面板」。我該如何更換一個控件? – 2010-11-01 08:38:37

+0

您只需創建一個''而不是現在您已經擁有控制權的位置,然後當您準備添加實際面板時,只需將其添加爲小孩即可。這個孩子將自動佔據碼頭面板的所有空間。 – 2010-11-01 08:43:01

+0

Bedankt彼得! – 2010-11-01 14:10:04