如何在WPF上刷新我的DataGrid

时间:2015-08-27 13:59:54

标签: c# wpf mvvm

我有一个问题。

我有这个WPF GridView

<DataGrid 
  ItemsSource="{Binding Path=myOrder.Detail}">
</DataGrid>

viewModel上的我的属性如下所示:

public myOrderModel myOrder { get; set; }

这是我的模特:

public partial class myOrderModel
{
    public int ID_Order { get; set; }
    public List<myOrdenDetail> Detail { get; set; }
}

在viewmodel的构造函数上,用来自WCF服务的数据填充我的Order,并在网格上正确显示详细信息(当然这个代码已经简化)。现在我需要在viewmodel中修改de Detail集合(添加,删除或修改)。问题是gridview未刷新以显示此更改。

如何通知网格以反映详细列表中的更改? 感谢!!!!

修改

按照建议我尝试使用ObservableCollection并且它有效。在viewModel中我添加了一个属性:

public ObservableCollection<myOrdenDetail> Detail{ get; set; }

并将模型映射到我的新属性:

Detail = new ObservableCollection<myOrdenDetail>(myOrder.Detail);

当然,我需要在保存信息时将Detail映射回原始模型。我也可以更改WCF服务背后的原始模型,但我不知道WCF将如何与ObservableCollection作出反应。

谢谢!

1 个答案:

答案 0 :(得分:2)

WPF需要知道项目已更改且List<T>未实施INotifyCollectionChanged。如果您要将Detail属性更改为ObservableCollection<myOrderDetail>,那么您应该好好去,并且在添加或删除项目时网格会更新。