更新WPF Datagrid中的单行

mar*_*rko 2 c# wpf wpfdatagrid

我正在创建一个下载管理器,我的WPF数据网格绑定到表示正在进行下载的对象集合(在单独的线程中).当我运行多个下载时,每个人都使用此代码每秒更新其datagrid项:

        if (DateTime.Now > download.LastUpdateTime.AddSeconds(1))
        {
            this.downloadsGrid.Items.Refresh();
            download.LastUpdateTime = DateTime.Now;
        }
Run Code Online (Sandbox Code Playgroud)

Datagrid.Items.Refresh()完成了这项工作,但它重建了整个数据网格,导致所有下载在一秒内多次更新其他数据网格行,我不希望出现这种行为.有没有办法刷新数据网格中的特定行(项)?

shr*_*iek 8

你的下载类是否实现INotifyPropertyChanged?如果没有,那就是为什么你必须调用refresh才能看到网格中的变化.如果实现INotifyPropertyChanged绑定,则会在更改值时更新.


Dan*_*sha 6

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