【问题标题】:Datagrid is not updating rows in WPF MVVMDatagrid 未更新 WPF MVVM 中的行
【发布时间】:2014-03-19 10:04:44
【问题描述】:

在我的应用程序中,我有两个通过实体框架连接到 DB 的数据网格。第一个数据网格仅用于选择工人,第二个数据网格用于添加、删除、更新先前选择的工人培训。请查看screenshot 以获得更好的视图。

问题是,每当我从第二个数据网格(带有训练的)中添加或删除行时它不会更新行,它会更新数据库,但数据网格控件保持不变。修改行效果很好。

我在尝试解决这个问题时做了什么: 1.检查愚蠢的代码错误(拼写错误等) 2. 强制更新 Itemsource : OnPropertyChanged("ToolboxList"); 3. 断点一切,它的工作...

但是数据网格行是一样的...

一些线索可能是原因,但我不确定他们是否是这里的问题制造者:

  1. enovaWorkers 它不是一个表而是一个视图,hr_ToolboxTalk 它是一个表,并且由于您无法将视图关联到表,因此它们在 EF edmx 文件中与一对多实用地关联。

    李>
  2. 第二个数据网格不会被第一个数据网格 (SelectedWorker.hr_ToolboxTalk) 中的选择绑定,因为每当您想在第二个网格中编辑行时,它都会引发 Edit is not allowed 异常。此处对此进行了描述:master detail datagrid not editable

    因为我不能也不想编辑实体框架 tt 文件,所以我使用 GetToolboxTalkList() 方法解决了问题。所以请检查代码。

粘贴的代码(有些部分被剪掉了):

XAML:pastebin.com/h3sdbfKm

ViewModel:pastebin.com/7Vj3P5UJ

ICommand 类:pastebin.com/rQAh7FM9

感谢您的帮助...

【问题讨论】:

    标签: c# wpf data-binding mvvm wpfdatagrid


    【解决方案1】:

    变化:

    List<hr_ToolboxTalk> ToolboxList;
    

    到:

    ObservableCollection<hr_ToolboxTalk> ToolboxList;
    

    它会起作用,列表不会自动通知视图。

    【讨论】:

    • 是的,它成功了!我们还必须更改 GetToolboxTalkList() 方法以使用 ObservableCollection,现在一切更新顺利。不确定 List 没有什么,因为我们在 set 属性中使用 OnPropertyChanged() 对其进行了更新。再次感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-29
    • 1970-01-01
    • 1970-01-01
    • 2014-05-15
    相关资源
    最近更新 更多