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

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

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

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


问题是,我在应用程序中使用了很多DataBinding。

在某个地方,我将IBindingList<Detail>用作ListView的ItemsSource

当我修改(使用后台代码)列表的某些元素,数量和价格时,listview被正确更新。

但是,小计不会更新。

我认为这是因为实体框架会自动完成某些操作以通知某些内容已更改,但是我不知道要向自定义属性添加什么内容,以使其行为相同。

你能帮我吗?

最佳答案

UI不知道Subtotal的值已更改。实现System.ComponentModel.INotifyPropertyChanged,然后引发PropertyChanged事件,以使UI知道SubtotalPrice更改时Quantity已更改。

例如:

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应适当更新Subtotal的显示值。

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

10-10 22:44