4

我正在创建一个下载管理器,并且我的 WPFDataGrid绑定到代表正在进行的下载的对象集合(在单独的线程中)。当我运行多个下载时,每个下载都使用此代码DataGrid每秒更新其项目:

if (DateTime.Now > download.LastUpdateTime.AddSeconds(1))
{
    this.downloadsGrid.Items.Refresh();
    download.LastUpdateTime = DateTime.Now;
}

Datagrid.Items.Refresh()完成这项工作,但它重建了整体DataGrid,导致所有下载在一秒钟内多次更新彼此DataGrid的行,我不想要那种行为。有没有办法刷新 a 中的特定行(项目)DataGrid

4

2 回答 2

9

如果您将 DataGrid 绑定到ObservableCollection(实现INotifyCollectionChanged),您的 DataGrid 将在添加新项目或删除项目时收到通知。此外,如果您只是更新集合中对象的属性,则该对象应实现INotifyPropertyChanged并引发 PropertyChanged 事件,该事件将告诉 DataGrid 仅更新该值。

于 2012-05-08T03:08:52.620 回答
8

你的下载类实现了INotifyPropertyChanged吗?如果没有,这就是为什么你必须调用刷新来查看网格的变化。如果你实现INotifyPropertyChanged了绑定,当值改变时会更新。

于 2012-05-07T19:22:21.173 回答