【问题标题】:Add a new row to DataGrid at runtime (WPF)在运行时向 DataGrid 添加新行 (WPF)
【发布时间】:2011-06-12 08:06:47
【问题描述】:

我有一个 DataGrid 并在加载窗口时填充它,如下所示:

private void Window_Loaded(object sender, RoutedEventArgs e) {
    var list = DbService.GetStuffsFull();
    dataGrid.ItemsSource = list;
}

当我尝试通过此代码在运行时添加新行时:

Stuff item = new Stuff();
dataGrid.Items.Add(item);

我收到此错误:

操作无效 ItemsSource 正在使用中。访问和 修改元素 改为 ItemsControl.ItemsSource。

如何在运行时添加新行?

【问题讨论】:

    标签: wpf data-binding datagrid wpfdatagrid


    【解决方案1】:

    如果您将 Items 集合中的项目提供为 ItemsSource,则不能修改它。您应该将项目添加到您的list(实现INotifyCollectionChanged,或者您应该最初通过Add 方法填充Items 属性。

    错误描述很清楚,不是吗?

    【讨论】:

    • 请注意,在大多数情况下,获取INotifyCollectionChanged 的最佳方法是使用`ObservableCollection;。
    【解决方案2】:

    尝试做这样的事情: var row = dataGrid.NewRow();

        dataGrid.Rows.Add(row);
        row["column1"] = "data1";  
        row["column2"] = "data2";
        row["column3"] = "data3";
    
    InitializeComponent();
    

    【讨论】:

    • 你真的建议在致电InitializeComponent之前与dataGrid互动吗?
    猜你喜欢
    • 1970-01-01
    • 2015-04-06
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2016-11-09
    • 2011-04-16
    • 1970-01-01
    • 2010-10-15
    相关资源
    最近更新 更多