2009-08-06 68 views
0

我有一個Silverlight應用程序,我定期加載更多數據並將其作爲UserControls添加到頁面中。我在一組中加載大約25個對象,併爲每個對象創建一個UserControl。如何在添加多個UserControl時避免生澀動畫?

這會花費相當多的時間!加載25個對象純粹在UI中需要50-150ms。這使得我的動畫相當生澀,這是非常不可取的。

有沒有什麼辦法來加快UserControls的加載?我寧願不添加某種類型的緩衝層每秒加載X項。我也不會預先加載一些UI對象的大緩衝區,我會根據有多少數據進入Zombiefy /重用。然而,目前我無法想到其他選項。

UserControls本身相當簡單,我非常驚訝,它們加載得太慢了。基本上,我只是創建它們(在構造函數中不做任何事情),設置DataContext並將它們添加到它們的父級畫布中。

它應該是慢嗎?有什麼明顯的我可以在這裏失蹤?我能以某種方式將此與動畫時間解耦嗎?我想不是 - 用戶界面幾乎肯定是單線程的。

回答

0

經過很長時間的各種項目嘗試各種解決方案後,我唯一能說的就是它真的很慢。我還沒有發現任何其他的解決方案,只是在任何地方隨時隨地創建儘可能少的對象。

UI對象的創建速度非常慢。這似乎是一個令人傷心的事實。

0

我不完全確定您的動畫如何與創建UI對象相關聯,所以我可能會丟失一些東西。只是想提前一點,我所知道的唯一解決方案就是你說過的你不想追求的東西。我將在開始動畫之前創建新的UI對象,並將其可見性設置爲摺疊狀態。然後,您可以在適當的時候讓動畫修改UI元素可見性以使其可見。創建用戶界面對象(您提到的50-150毫秒聽起來完全不符合要求,不知道對象是幹什麼的時候)是無法擺脫的。您可以確保您的UI對象在構造函數或Loaded事件處理函數中沒有做任何不必要的工作。我在性能問題上的一般想法是,你需要測試,而不是理論,所以我會嘗試多種選擇,看看哪些能夠給你想要的性能。

相關問題