2012-04-02 80 views
0

我正在爲我的網格使用Infragistics XamDataGrid。它綁定到一個ObservableCollection。「加載」動畫優先

當在窗口的下拉菜單中進行選擇時,會在後臺線程上發出數據請求,並啓動加載動畫。隨着數據的接收,所有必要的工作都在後臺線程完成。

我面臨的問題是,一旦所有數據都準備好了,我需要更新網格綁定的集合。這需要在UI線程上完成。那麼會發生什麼呢,當XamDataGrid正在UI線程上處理集合更改時,我的動畫停止動畫。

據我所知,我不能做很多事情,因爲網格加載和動畫都需要在同一個UI線程上發生。

有什麼我可能錯過了?在網格正在顯示新行的同時保持動畫運行的一些方法?

+0

顯示您處理RunWorkerCompleted事件的位置。 – Paparazzi 2012-04-02 19:35:30

回答

1

我會做的第一件事是找出性能成本在哪裏。簡化您的用戶界面並使用WPFPerf來嘗試解決這個問題。例如,您可能會發現網格中有一個特別昂貴的數據模板。

如果仍然存在性能問題,可以將更新批量分組到小組中,然後在自己的調度程序消息中運行每個小組。僞代碼:

// running on BG thread 
var data = server.GetTheData(); 

// have the data, so marshal back to the UI thread in batches of 5 
foreach (var batch in data.Batch(5)) 
{ 
    dispatcher.Invoke(..., batch); 
}