我希望动态地将列表绑定到数据网格,以下代码首次运行,如果再次单击添加,则不会在数据网格中填充它。
private List<Item> PopulateItemList()
{
return itemLst;
}
private void btnAdd_Click(object sender, RoutedEventArgs e)
{
Item item = new Item();
item.Item1 = txtItem.Text;
itemLst.Add(item);
grdItem.ItemsSource = PopulateItemList();
}
private List<Item> itemLst = new List<Item>();
private void Page_Loaded(object sender, RoutedEventArgs e)
{
itemLst.Clear();
}
感谢。
答案 0 :(得分:5)
您应该使用ObservableCollection<T>
代替List<T>
。
ObservableCollection<T>
实现了INotifyCollectionChanged
,它会在您添加或删除项目时告诉WPF。
答案 1 :(得分:1)
你应该按照Slaks的建议使用ObservableCollection。否则,您必须先将datatgrid itemSource设置为null,然后再将其再次填充到其他值。 但我强烈建议你使用ObservableCollection,你可以在UserControl的构造函数中将它设置为datagrid的ItemSource,而不是再次设置它。