我在更新我的视图时遇到了问题。
我有两个DataGrids,我必须动态添加列。为此,我向DataGrid添加了一个附加属性,它绑定到一个ObservableCollection,然后编写了一个自定义ObjectToDataGridColumnConverter,它将一个对象(主要是字符串)转换为DataGridColumn,然后将这个新列添加到DataGrid。
它适用于我的两个DataGrids中的一个。另一个(首先是updatet)打破了
var grid = source as DataGrid;
grid.Columns.Add(col);
带有InvalidOperationException:
The calling thread cannot access this object because a different thread owns it.
即使我尝试Application.Current.Dispatcher.Invoke(new Action(() => grid.Columns.Add(col))
,它也会因同样的异常而中断。
我的其他DataGrid使用相同的代码添加其列,它工作正常。即使没有对Dispatcher对象的任何Invoke调用。