“必须在与DependencyObject相同的线程上创建DependencySource”时创建GridView
我有一个线程问题。当我想在另一个线程中将一个GridView设置为ListView作为View时。它显示一条消息,其中显示:
必须在与DependencyObject相同的Thread上创建DependencySource。
// Create grid view GridView grid = new GridView(); // Add column // Name grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileName"]); // Type grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileType"]); // Data Modified grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileDataModified"]); // Size grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileSize"]); // Edit view Application.Current.Dispatcher.Invoke(new Action(() => ListViewOp.View = grid));
我在做什么?
由于错误说Dependency Property and its corresponding binding have to be created on same thread
。 它不能在不同的线程上设置。 也可以在UI调度程序上创建网格。 由于您的ListView View
DP是在UI线程上创建的,因此它的源属性即GridView
也应该在UI线程上。
Application.Current.Dispatcher.Invoke((Action)(delegate { GridView grid = new GridView(); grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileName"]); grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileType"]); grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileDataModified"]); grid.Columns.Add((GridViewColumn)myresourcedictionary["gridDirFileSize"]); ListViewOp.View = grid }));