私はダウンロードマネージャを作成しています。私のWPFデータグリッドは、進行中のダウンロードを表すオブジェクトのコレクション(別々のスレッド)にバインドされています。私が実行している複数のダウンロードを持っている場合は、それぞれが毎秒そのデータグリッドの項目を更新するには、このコードを使用している:WPF Datagridで単一行を更新する
if (DateTime.Now > download.LastUpdateTime.AddSeconds(1))
{
this.downloadsGrid.Items.Refresh();
download.LastUpdateTime = DateTime.Now;
}
Datagrid.Items.Refresh()仕事をしていませんが、それがすべてのダウンロードを引き起こし、全体のデータグリッドを再構築しますそれぞれの他のデータグリッドの行を1秒間に何度か更新する必要があります。私はそのような動作を望んでいません。データグリッド内の特定の行(アイテム)をリフレッシュする方法はありますか?
shriekとDan Bushaありがとうございました。 Listがありますが、ObservableCollection に切り替えて、WebDownloadClientでDataGridを更新するたびにPropertyChangedイベントハンドラを呼び出すことでINotifyPropertyChangedを実装します。 –
marko
観察可能なコレクション内のアイテムの状態に応じて背景色を変更したい場合はどうすればよいですか? –
DataRowのスタイルを変更し、ObservableCollectionの行項目の背景値をBrushプロパティにバインドする必要があります –