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
父控件的线程上创建并添加了对象。
我有一个数据网格。我想根据事件添加列。 所以我
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
父控件的线程上创建并添加了对象。