如何在DataGrid
中部分更新WPF
?
我想只更新一个列及其DataGrid
内的所有值,而不刷新整个网格。我正在使用计时器,它将每隔XX秒重新加载网格和最新数据。
我怎么能这样做?
网格行上有双击事件,因此如果用户在此时单击时整个网格都会刷新,则它将无法处理double click
。同样如果我有HyperLink
列。我相信如果我部分更新可以处理这种情况吗?
现在绑定是:
dataGrid.DataContext = myCollection;
dataGrid.Items.Refresh();
对于那些刷新网格并有类似问题的人来说,这是一个想法:
仅当DataGrid
的值发生更改时,我才会刷新myCollection
计时器刻度事件。
答案 0 :(得分:2)
在WPF中,我们使用数据元素而不是UI元素...而不是试图操纵DataGrid
中每行的列值,您应该考虑将自定义类实例的集合绑定到数据DataGrid.ItemsSource
属性,然后只更新绑定到列的数据的类的任何属性。见这个例子:
<DataGrid ItemsSource="{Binding Items}" ... />
...
foreach (YourClass item in Items)
{
item.PropertyThatIsDataBoundToYourColumn = someNewValue;
}
为了使这项工作正常,您的自定义YourClass
课程应实施INotifyPropertyChanged
interface。