“必须在与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 }));