c# - 使用 Entity Framework 绑定(bind)自定义属性

标签 c# binding entity

我正在使用 Entity 框架构建 C# 应用程序。

我有一个实体,它是从我的数据库创建的,它有字段“价格”和“数量”。

使用部分类声明,我创建了一个自定义属性“SubTotal”,如下所示:

partial class Detail {
  public decimal Subtotal {
    get
    {
      return Price * Quantity;
    }
  }  
}

问题是,我在我的应用程序中使用了很多数据绑定(bind)。

在某处,我使用 IBindingList<Detail>作为ItemsSource对于 ListView。

当我修改(使用代码隐藏)列表的某些元素、数量和价格时, ListView 会正确更新。

但是,小计不会更新。

我认为这是因为 Entity Framework 会自动完成某些操作以通知某些内容已更改,但我不知道要将什么添加到我的自定义属性以使其以相同的方式运行。

你能帮帮我吗?

最佳答案

UI 不知道 Subtotal 的值已更改。实现 System.ComponentModel.INotifyPropertyChanged ,然后引发 PropertyChanged 事件,让 UI 知道 SubtotalPriceQuantity 发生变化时发生变化改变了。

例如:

partial class Detail : INotifyPropertyChanged {

   public decimal Subtotal 
   {
      get
      {
         return Price * Quantity;
      }
   }  

   public event PropertyChangedEventHandler PropertyChanged;

   private void NotifyPropertyChanged(String info)
   {
      if (PropertyChanged != null)
      {
          PropertyChanged(this, new PropertyChangedEventArgs(info));
      }
   }
}

然后,当 PriceQuantity 发生变化时,您将调用 NotifyPropertyChanged("Subtotal"),UI 应更新显示的小计的值适当。

关于c# - 使用 Entity Framework 绑定(bind)自定义属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5069232/

相关文章:

javascript - 如何让我的 javascript 在 asp.net cshtml 文件中工作?

c# - 如何从序列中间切掉一些元素?

c# - 将 WPF 数据网格列标题绑定(bind)到代码后面的属性

Symfony 实体验证验证外键是否存在

c# - 以编程方式更改 log4net 日志记录级别

c# - 从静态方法访问类成员

c# - Silverlight DataGrid 列验证

c# - 如何在多重绑定(bind)中获取父值

mysql - ORM 建模 - 实体类型与值类型

database - 数据库中的对象和实体有什么区别?