OnEvent 数据网格列添加失败

OnEvent datagrid column add fail

我有一个数据网格。我想根据事件添加列。 所以我

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

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

The calling thread cannot access this object because a different thread owns it.

感谢您的帮助 帕特里克 }

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

像这样更改您的代码:

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

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

所以在拥有 UI 父控件的线程上创建并添加了对象。