0

我无法弄清楚为什么会这样。将 DataGrid 绑定到 DataTable.DefaultView 会导致应用程序挂起。我想显示已解析并放置在 DataTable 中的 CSV 文件的内容。这种使用 backgroundWorker 的方法在 WinForms 中取得了成功,并且这个 WPF 应用程序是一个用于学习 WPF 的小型导入实用程序的简单移植。这是 XAML

 <DataGrid  x:Name="detailGrid"  AutoGenerateColumns="True"  />

这是背后的代码:

  private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {

        if (e.Error != null)
        {
        }
        else if (e.Cancelled)
        {
        } 
        else
        {

            DataTable T = (e.Result as DataTable);
            // verified in immediate window that T.Rows.Count = 80106 at this point
            this.detailGrid.ItemsSource = T.DefaultView;

        }

我的理解是 RunWorkerCompleted 事件是在 UI 线程上引发的,所以这里不需要 Dispatcher.Invoke(new Action() ... 。

4

1 回答 1

0

这不是线程问题。由于未在 DataGrid 上设置显式高度,UI 变得无响应。

于 2013-06-03T10:23:10.503 回答