如何调用数据网格的项源来刷新它
本文关键字:刷新 网格 数据网 何调用 调用 数据 | 更新日期: 2023-09-27 17:56:14
我正在使用 WPF DataGrid 在主窗口的属性中显示实例列表,例如我在应用程序生命周期内存储的类Animal
(假设我在列表中添加/删除动物)
public List<Animal> _animals
public class Animal {
public int ID { get; set; }
public strng name { get; set; }
}
我将DataGrid
添加到我的 XAML 中,如下所示
<DataGrid Name="AnimalGrid"></DataGrid>
然后将其链接到初始化窗口时LoadAnimals()
的函数:
AnimalGrid.ItemsSource = LoadAnimals();
public List<Animal> LoadAnimals() {
return _animals;
}
我希望数据网格更新/刷新。更准确地说,我几乎只希望数据网格再次调用LoadAnimal
函数。我已经尝试过AnimalGrid.Items.Refresh()
但它不起作用。
有什么建议吗?
WPF 绑定不能单独工作,代码以某种方式需要发出正确的事件才能更新数据网格。
要更新以响应集合中的更改(添加/删除),请使用 ObservableCollection<Animal>
作为您的ItemsSource
,这将触发适当的事件以在集合更改时更新数据网格。
如果希望网格响应各个行的ID
和name
属性中的更改,则还必须在 Animal
类中实现INotifyPropertyChanged
。
此外,您的 LoadAnimals()
函数似乎没有执行任何操作,因为它只是检查 null,然后在这种情况下返回 null。 +1 对于关于 MVVM 的评论,从长远来看,最好将ItemsSource
绑定到类(视图模型)中的某个属性,而不是在代码隐藏中设置它。
如果您只是添加从集合中删除元素。然后你可以使用可观察集合
如果要创建新集合或要更新集合中对象的属性。实现 INotifyPropertyChanged。