我正在创建一个下载管理器,我的WPF DataGrid
绑定到一个表示正在进行的下载的对象集合(在单独的线程中)。当我有多个下载正在运行时,每个下载都使用以下代码每秒更新其DataGrid
项:
if (DateTime.Now > download.LastUpdateTime.AddSeconds(1))
{
this.downloadsGrid.Items.Refresh();
download.LastUpdateTime = DateTime.Now;
}
Datagrid.Items.Refresh()
完成了这项工作,但它重建了整个DataGrid
,导致所有下载在一秒钟内多次更新彼此的DataGrid
行,我不希望出现这种行为。有没有办法刷新DataGrid
中的特定行(项)?
2条答案
按热度按时间hrysbysz1#
如果将DataGrid绑定到ObservableCollection(它实现INotifyCollectionChanged),则在添加新项或移除项时,DataGrid将收到通知。此外,如果您只是更新集合中某个对象的属性,则该对象应实现INotifyPropertyChanged并引发PropertyChanged事件,该事件将告诉DataGrid只更新该值。
brjng4g32#
你的下载类实现了
INotifyPropertyChanged
吗?如果没有,这就是为什么你必须调用refresh来查看网格中的变化。如果你实现了INotifyPropertyChanged
,绑定将在值改变时更新。