如何调用DataGrid的ItemSource来刷新它?

时间:2013-01-25 17:08:56

标签: c# wpf datagrid

我正在使用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(),但它不起作用。

有什么建议吗?

2 个答案:

答案 0 :(得分:2)

WPF绑定不能单独使用魔法,代码以某种方式需要发出正确的事件以供数据网格更新。

要更新以响应集合中的更改(添加/删除),请使用ObservableCollection<Animal>作为ItemsSource,这将触发正确的事件以在集合更改时更新数据网格。

如果您希望网格响应各行的INotifyPropertyChangedAnimal属性中的更改,则还必须在ID课程中实施name

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

答案 1 :(得分:0)

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

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