0

我想使用 WPF DataGridAnimal在我的主窗口的属性中显示一个实例列表,例如我在我的应用程序生命周期中存储的一个类(比如我在我的列表中添加/删除动物)

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

有什么建议么 ?

4

2 回答 2

2

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

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

如果您希望网格响应各个行的和属性的更改,您还必须INotifyPropertyChanged在您的类中实现。AnimalIDname

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

于 2013-01-25T17:16:18.153 回答
0

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

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

于 2013-01-25T17:16:59.730 回答