我有一个问题。
我有这个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作出反应。
谢谢!
答案 0 :(得分:2)
WPF需要知道项目已更改且List<T>
未实施INotifyCollectionChanged
。如果您要将Detail
属性更改为ObservableCollection<myOrderDetail>
,那么您应该好好去,并且在添加或删除项目时网格会更新。