如何调用数据网格的项源来刷新它

本文关键字:刷新 网格 数据网 何调用 调用 数据 | 更新日期: 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,这将触发适当的事件以在集合更改时更新数据网格。

如果希望网格响应各个行的IDname属性中的更改,则还必须在 Animal 类中实现INotifyPropertyChanged

此外,您的 LoadAnimals() 函数似乎没有执行任何操作,因为它只是检查 null,然后在这种情况下返回 null。 +1 对于关于 MVVM 的评论,从长远来看,最好将ItemsSource绑定到类(视图模型)中的某个属性,而不是在代码隐藏中设置它。

如果您只是添加从集合中删除元素。然后你可以使用可观察集合

如果要创建新集合或要更新集合中对象的属性。实现 INotifyPropertyChanged。