C# 如何在WPF上刷新数据网格
我有个问题 我有这个WPF GridViewC# 如何在WPF上刷新数据网格,c#,wpf,mvvm,C#,Wpf,Mvvm,我有个问题 我有这个WPF GridView <DataGrid ItemsSource="{Binding Path=myOrder.Detail}"> </DataGrid> 这是我的模型: public partial class myOrderModel { public int ID_Order { get; set; } public List<myOrdenDetail> Detail { get; set; } } 公
<DataGrid
ItemsSource="{Binding Path=myOrder.Detail}">
</DataGrid>
这是我的模型:
public partial class myOrderModel
{
public int ID_Order { get; set; }
public List<myOrdenDetail> Detail { get; set; }
}
公共部分类myOrderModel
{
公共整数ID_顺序{get;set;}
公共列表详细信息{get;set;}
}
在ViewModely的构造函数上,使用WCF服务的数据填写我的订单,详细信息将正确显示在网格上(当然,此代码已简化)。现在,我需要从viewmodel内部修改de Detail集合(添加、删除或修改)。问题是gridview没有刷新以显示这些更改
如何通知网格以反映明细表中的更改?
谢谢
编辑
正如我建议的那样,我尝试了ObservableCollection,它成功了。在viewModel中,我添加了一个属性:
public ObservableCollection<myOrdenDetail> Detail{ get; set; }
publicobservableCollection详细信息{get;set;}
并将模型映射到我的新属性:
Detail = new ObservableCollection<myOrdenDetail>(myOrder.Detail);
Detail=新的ObservableCollection(myOrder.Detail);
当然,我需要在保存信息时将细节映射回原始模型。我也可以改变WCF服务背后的原始模型,但我不知道WCF会如何反应ObservableCollection
谢谢 WPF需要知道项目已更改,并且
List
未实现INotifyCollectionChanged
。如果要将详细信息
属性更改为ObservableCollection
,那么您应该准备好,当添加或删除项目时,网格将更新。我已经有一段时间没有使用WPF了,但据我所知,列表应该是一个ObservableCollection,您应该使用INotifyPropertyChanged事件要告诉视图更新,请尝试使用observedcollection Detail
而不是List Detail
查看:谢谢Kyle。看到我的更新。好的,但要做到这一点,我应该改变我的模型背后的WCF服务。ObservableCollection是否与WCF兼容?
Detail = new ObservableCollection<myOrdenDetail>(myOrder.Detail);