如何将List <object>动态绑定到WPF中的DataGrid?</object>

时间:2011-10-05 17:16:13

标签: c# .net wpf wpfdatagrid

我希望动态地将列表绑定到数据网格,以下代码首次运行,如果再次单击添加,则不会在数据网格中填充它。

screenshot

       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(); 

    }

感谢。

2 个答案:

答案 0 :(得分:5)

您应该使用ObservableCollection<T>代替List<T>

ObservableCollection<T>实现了INotifyCollectionChanged,它会在您添加或删除项目时告诉WPF。

答案 1 :(得分:1)

你应该按照Slaks的建议使用ObservableCollection。否则,您必须先将datatgrid itemSource设置为null,然后再将其再次填充到其他值。 但我强烈建议你使用ObservableCollection,你可以在UserControl的构造函数中将它设置为datagrid的ItemSource,而不是再次设置它。