c# - 为什么在更改 ItemsSource 时 DataGrid 不更新?

标签 c# wpf data-binding datagrid itemsource

我的 wpf 应用程序中有一个数据网格,我有一个简单的问题。我有一个通用列表,每次将对象添加到集合中时,我都想将此集合绑定(bind)到我的数据网格数据源。而且我对使用可观察集合不感兴趣。

重点是我在其他地方使用了相同的方法并且效果很好。但是这次当我按下添加按钮时,一个对象被添加并且数据网格更新正确但是从第二个项目添加到集合数据网格不再更新。

代码如下:

 private void btnAddItem_Click(object sender, RoutedEventArgs e)
    {
        OrderDetailObjects.Add(new OrderDetailObject
        {
            Price = currentitem.Price.Value,
            Quantity = int.Parse(txtQuantity.Text),
            Title = currentitem.DisplayName,
            TotalPrice = currentitem.Price.Value * int.Parse(txtQuantity.Text)
        });

        dgOrderDetail.ItemsSource = OrderDetailObjects;
        dgOrderDetail.UpdateLayout();
    }

有什么想法吗?

最佳答案

ItemsSource 始终相同,是对您的收藏的引用,没有变化,没有更新。您可以在之前将其取消:

dgOrderDetail.ItemsSource = null;
dgOrderDetail.ItemsSource = OrderDetailObjects;

或者,您也可以只刷新项目:

dgOrderDetail.ItemsSource = OrderDetailObjects; //Preferably do this somewhere else, not in the add method.
dgOrderDetail.Items.Refresh();

我不认为你真的想在那里调用 UpdateLayout...

(拒绝使用 ObservableCollection 并不是一个好主意)

关于c# - 为什么在更改 ItemsSource 时 DataGrid 不更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7059070/

相关文章:

c# - 为少数控件启用 ViewState 并为其他控件/页面禁用

c# - 有界类型变量 Java 与 C#

c# - 向数据库中插入数据,无法弄清楚

asp.net - WPF 是否有母版页的概念(如在 asp.net 中)?

c# - 在虚拟化 WPF TreeView 中滚动非常不稳定

c# - 使 DataGridView 在使用基类对象列表时显示派生类对象的属性

c# - DiagnosticDescriptor 构造函数的新参数的相关性?

c# - 在代码后面更改 Canvas.Left 属性?

wpf - 如何在 ListView 控件中设置SelectedItem?

android - 自定义 View 上的自定义监听器的数据绑定(bind)