2013-12-17 152 views
2

我已經遇到了一個情況我有一個ItemsControl生成一個數據收集相當複雜的可視化樹,死的簡單:WPF綁定用戶娛樂

<ItemsControl ItemsSource="{Binding Items}"/> 

小問題我已經是當初始綁定建設發生時,它可能需要一段「明顯的」時間(根據樹的複雜程度,從1/2秒到2秒)。在此期間,UI線程完全無響應(動畫掛起,點擊未註冊等)。

虛擬化已經啓用並正在運行,所以基本上我只需要能夠在ItemContainerGenerator執行動作的同時播放動畫。

+2

您是否嘗試過大部分的綁定設置爲'IsAsync = TRUE'? –

+0

@HighCore不是,但我確定現在就試試。 – xvpower

+1

我猜你有大量的物品,不是嗎? –

回答

2

嘗試最綁定設置爲IsAsync=True

<SomeControl SomeProperty="{Binding SomeData, IsAsync=True}"/> 
1

爲了使這段不凍結UI,你可以把項目數據加載到一個BackgroundWorker http://msdn.microsoft.com/en-us/library/cc221403(v=vs.95).aspx

然後在BackgroundWorker的的方法結束時,通知項目屬性已經改變。

+0

數據已經加載並且很好走,掛起是由綁定引擎本身創建可視對象引起的。 – xvpower

+0

對不起,我誤解了。但無論如何,我認爲只有當重處理部分放在另一個線程中時,UI纔會凍結,如果可能的話,我會建議嘗試使用線程解決方案。 –