【问题标题】:How to bind List<object> dynamically to a DataGrid in WPF?如何将 List<object> 动态绑定到 WPF 中的 DataGrid?
【发布时间】:2011-10-05 17:16:12
【问题描述】:

我想动态绑定列表到数据网格,下面的代码第一次工作,如果再次点击添加它不会被填充到数据网格中。

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

    }

谢谢。

【问题讨论】:

  • +1 以获得良好的屏幕截图和包含完全相关部分的代码示例。

标签: c# .net wpf wpfdatagrid


【解决方案1】:

您应该使用ObservableCollection&lt;T&gt; 而不是List&lt;T&gt;

ObservableCollection&lt;T&gt; 实现了INotifyCollectionChanged,它会在您添加或删除项目时通知 WPF。

【讨论】:

  • 我打算输入一个非常相似的响应。
  • 另外:ObservableCollection&lt;T&gt; 通知列表更改(添加、删除、移动)但不适用于T 更改。你需要T 来实现INotifyPropertyChanged
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 2011-06-26
    • 2011-07-09
    • 2011-02-21
    • 1970-01-01
    • 2017-05-13
    • 2012-03-15
    • 1970-01-01
    相关资源
    最近更新 更多