c# - 绑定(bind) UI 元素不通过 Itemsource 中的更改值刷新

标签 c# wpf entity-framework data-binding datagrid

我是 wpf 和 c# 编程新手。 我有一个数据网格的小问题。 网格绑定(bind)在 EF 表上。

我可以查看和更改所有字段并将更改保存到数据库中。 问题是。当我通过 context.savechanges 将数据保存到 SQL 数据库时,SQL-Server-Table 上的触发器修改了记录中的某些字段。

当在保存命令后重新加载当前项目的实体时,我可以在我的实体中看到修改后的数据,但在我的 UI 中看不到。 我必须制作 datagrid.items.refresh 才能看到更改。但是刷新性能不佳,我松开了当前的单元格位置。 我需要一种方法,在 UI 中的字段更改后,将 SQL-Server 对当前记录的任何更改动态推送到 UI。

有人有什么想法吗?

在窗口上的简单文本框元素中,我可以使用 BindingExpression 通过 binding.UpdateTarget 推送更改。但在 DatagridTextColumn 中是不可能的。

最佳答案

你的实体类应该实现 INotifyPropertyChanged接口(interface)并在数据绑定(bind)属性设置为新值时引发更改通知。

如果您使用自动生成的实体类,则需要修改生成这些实体类的模板:

How to get property change notifications with EF 4.x DbContext generator

或者您可以绑定(bind)到您自己实现此接口(interface)的包装类:

Implement INotifyPropertyChanged on generated Entity Framework classes

关于c# - 绑定(bind) UI 元素不通过 Itemsource 中的更改值刷新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46195566/

相关文章:

asp.net-mvc - 扩展 Entity Framework 应用程序/多个应用程序访问同一个数据库?

c# - Entity Framework 树结构

c# - 设置WebView2的缓存目录

c# - 将接口(interface)类型作为参数传递

c# - AsyncAwait 导致意外的方法行为,如果从构造函数调用,方法在错误的线程中运行

c# - 从 C# 代码控制 XAML 标记

c# - LINQ:在列表中查找频率 = 1 的项目

c# - 从 C# 的 PowerShell 当前状态(或上下文)获取信息

c# - 如果在数据网格 C# 中选中复选框,则获取整行值

c# - 我什么时候应该使用 CompiledQuery?