「DependencyObjectと同じスレッドでDependencySourceを作成する必要があります」GridViewを作成するとき

私はスレッドに問題があります。私は、別のスレッドでViewとしてListViewにGridViewを設定したい。それは言ったメッセージを表示する:

DependencyObjectと同じスレッドで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));

私は何をやっている?

3

1 答え

エラーが Dependency Propertyとそれに対応するバインディングを同じスレッド上に作成する必要があると言うので。別のスレッドに設定することはできません。 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
   }));
5
追加された
喜んで助けてください。 :)
追加された 著者 Rohit Vats,
どうもありがとうございます。
追加された 著者 teardrop,