0

我正在为我的网格使用 Infragistics XamDataGrid。它绑定到 ObservableCollection。

当在窗口的下拉列表中进行选择时,会在后台线程上请求数据并启动加载动画。接收到数据后,所有必要的工作都在后台线程上完成。

我面临的问题是,一旦所有数据都准备好,我需要更新网格绑定到的集合。这需要在 UI 线程上完成。所以发生的情况是,当 XamDataGrid 在 UI 线程上执行其工作以处理集合更改时,我的动画停止了动画。

据我所知,我无能为力,因为网格加载和动画都需要在同一个 UI 线程上发生。

有什么我可能错过的吗?在网格显示新行时保持动画运行的某种方法?

4

1 回答 1

1

我要做的第一件事是弄清楚性能成本在哪里。简化您的 UI 并使用 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);
}
于 2012-04-02T19:39:02.410 回答