在运行时向 DataGrid 添加新行 (WPF)

发布于 2024-11-14 22:58:12 字数 452 浏览 3 评论 0原文

我有一个 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。

如何在运行时添加新行?

I have a DataGrid and fill it when window loaded, like this:

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

and when i try to add a new row at run-time by this code:

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

I get this error:

Operation is not valid while
ItemsSource is in use. Access and
modify elements with
ItemsControl.ItemsSource instead.

how can I add a new row at runtime?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

夏花。依旧 2024-11-21 22:58:12

如果您将 Items 集合中的项目提供为 ItemsSource,则无法修改该集合中的项目。您应该将项目添加到您的 list(已实现 INotifyCollectionChanged),或者您应该首先通过 Add 方法填充 Items 属性 ?

错误描述很清楚,不是吗

You cannot modify items in Items collection if you provided it as ItemsSource. You should either add item to your list (with INotifyCollectionChanged implemented or you should initially populated Items property via Add method.

The error description is pretty clear, isn't it?

水水月牙 2024-11-21 22:58:12

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

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

InitializeComponent();

try doing something like this:
var row = dataGrid.NewRow();

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

InitializeComponent();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文