【问题标题】:"Loading" animation priority“加载”动画优先级
【发布时间】:2012-04-02 19:23:48
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 显示您处理 RunWorkerCompleted 事件的位置。

标签: wpf infragistics xamdatagrid


【解决方案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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多