我有一个问题。
我有这个 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; }
}
在 View 模型的构造函数中,使用来自 WCF 服务的数据填充我的订单,详细信息会正确显示在网格上(当然此代码已简化)。现在我需要从 View 模型内部修改详细信息集合(添加、删除或修改)。问题是 GridView 没有刷新以显示此更改。
我如何通知网格反射(reflect)详细列表中的更改? 谢谢!!!!
编辑
按照建议,我尝试使用 ObservableCollection 并且它有效。在 viewModel 中我添加一个属性:
public ObservableCollection<myOrdenDetail> Detail{ get; set; }
并将模型映射到我的新属性:
Detail = new ObservableCollection<myOrdenDetail>(myOrder.Detail);
当然,当我保存信息时,我需要将详细信息映射回原始模型。我还可以更改 WCF 服务背后的原始模型,但我不知道 WCF 将如何与 ObservableCollection 使用react。
谢谢!
最佳答案
WPF 需要知道项目已更改并且 List<T>
不实现INotifyCollectionChanged
。如果您要更改您的 Detail
属性(property)为ObservableCollection<myOrderDetail>
那么你应该可以开始了,当添加或删除项目时网格将会更新。
关于c# - 如何在 WPF 中刷新 DataGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32251434/