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

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

这是代码:

 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并不是一个好主意)

10-08 20:05