刷新时WPF DataGrid挂起UI

时间:2011-10-24 18:16:17

标签: wpf datagrid

我有一个datagrid,它有几个东西,它有下拉列表复选框和几个不同的模板列,它也有大量的数据。这里的问题是我设置了禁用单元格的属性,并在该属性上执行了RaisePropertyChange。它只在我向下滚动并加载下面的数据时更新。所以我决定发送一条消息并刷新网格中的项目。

以下代码用于在收到消息时刷新网格。

void RefreshGrid(RefreshGridMessage msg)
    {
        switch (msg.MsgType)
        {
            case RefreshGridMessage.MessageType.ExportChanged:

                this.Dispatcher.Invoke
                   (
                   new RefreshDelegate(
                       delegate
                       {
                           myGrid.Visibility = Visibility.Collapsed;
                           myGrid.Items.Refresh();
                           myGrid.Visibility = Visibility.Visible;
                       }
                      ),
                   null
                   );
                break;
        }
    }

这里的问题是它挂起UI几秒钟然后它完美地工作,我将得到我需要的结果。

这里的问题是有什么方法可以阻止这种悬挂并使其顺利运作?

1 个答案:

答案 0 :(得分:1)

您是否刷新了除UI线程以外的其他线程的数据。如果您不希望UI在该时间段内被延迟,请使用BeginInvoke而不是Invoke在Dispatcher上对其进行排队。 刷新委托将被称为asynchronously,您的UI将在该时间段内保持响应。