OnEvent datagrid列添加失败

时间:2016-02-09 13:31:26

标签: c# wpf multithreading datagrid dynamic-columns

我有一个数据网格。我想通过事件添加列。 所以我做了

 for (int iii = 1; iii <= 4; ++iii)
 {
  var dtgColumn = new DataGridTextColumn();
  dtgColumn.Header = "AAA"
  Dispatcher.Invoke((Action)(() => { dtgResults.Columns.Add(dtgColumn); }));
 }

但是尽管使用了调度程序,我得到了这个错误:

  

调用线程无法访问此对象,因为另一个线程拥有它。

感谢您的帮助 帕特里克           }

1 个答案:

答案 0 :(得分:1)

看起来问题不是UI控件本身,而是创建了dtgColumn对象。您正在一个线程上创建UI元素,并将其添加到主线程上的UI元素。

更改您的代码,如:

  Dispatcher.Invoke((Action)(() => { 
       var dtgColumn = new DataGridTextColumn();
       dtgColumn.Header = "AAA"

       dtgResults.Columns.Add(dtgColumn); 
   }));

因此,对象被创建并添加到拥有UI父控件的线程上。