更新WPF Datagrid中的单行

时间:2012-05-07 19:11:46

标签: c# wpf wpfdatagrid

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

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

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

2 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:6)

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