【发布时间】:2015-08-27 13:59:54
【问题描述】:
我有问题。
我有这个 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; }
}
在视图模型的构造函数中,用来自 WCF 服务的数据填充我的订单,详细信息会正确显示在网格上(当然,此代码已简化)。现在我需要从视图模型内部修改 de Detail 集合(添加、删除或修改)。问题是 gridview 没有刷新以显示此更改。
如何通知网格以反映详细列表中的更改? 谢谢!!!!
编辑
按照建议,我尝试使用 ObservableCollection 并且它有效。在 viewModel 我添加一个属性:
public ObservableCollection<myOrdenDetail> Detail{ get; set; }
并将模型映射到我的新属性:
Detail = new ObservableCollection<myOrdenDetail>(myOrder.Detail);
当然,当我保存信息时,我需要将 Detail 映射回原始模型。我也可以更改 WCF 服务背后的原始模型,但我不知道 WCF 将如何与 ObservableCollection 反应。
谢谢!
【问题讨论】:
-
自从我使用 WPF 以来已经有一段时间了,但据我所知,List 应该是 ObservableCollection,您应该使用 INotifyPropertyChanged 事件来告诉 View 进行更新。
-
你能用
ObservableCollection<myOrdenDetail> Detail代替List<myOrdenDetail> Detail试试 -
谢谢凯尔。查看我的更新。