Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在WPF上刷新数据网格_C#_Wpf_Mvvm - Fatal编程技术网

C# 如何在WPF上刷新数据网格

C# 如何在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; } } 公

我有个问题

我有这个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; }
}
公共部分类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);