デザインパターンMVVMで問題が発生しました。私のビューでは、ビューモデルのデータテーブルにバインドされたデータグリッドを取得しました。
<WPF:BADataGrid Grid.Column="1" x:Name="dgStapelliste" HorizontalAlignment="Stretch" VerticalAlignment="Stretch" ItemsSource="{Binding Stapelliste, Mode=OneWay}"/>
ビューモデルのコンストラクターで、ItemsSourceをロードします。
this.StapelListe = this._stapel.Get();
実行時にボタンを使用して行を追加すると、すべて正常に機能します。ただし、ボタンを押してデータグリッドを更新するのではなく、スレッドワーカーまたはバックグラウンドワーカーで自動的に更新する必要があります。
ここにいくつかのテスト例があります:
BackgroundWorker worker = new BackgroundWorker();
worker.DoWork += delegate(object s, DoWorkEventArgs args)
{
while (true)
{
Thread.Sleep(5000);
DataRow row = this.StapelListe.NewRow();
row["StapelNr"] = 123456;
this.StapelListe.Rows.Add(row);
}
};
これは機能しません...そして理由はわかりません...行はデータテーブル「StapelListe」に追加されますが、データグリッドはそれ自体を更新しません...
スレッド内のデータテーブルの既存の行を変更すると、機能します。コレクションに行を追加したり、コレクションから行を削除したりすることはできません。
誰かがこれがなぜ起こるのか、そして/またはそれをどのように解決するのか考えましたか?
敬具...