实体Datagrid:添加计算值的最佳方法?

时间:2011-09-30 18:52:23

标签: c# wpf datagrid entity

我有一个WPF数据网格数据绑定到一个collectionviewsource,它本身就是一个实体查询

在我的网格中,我有3列Number1,Number2,Number3,实体的所有属性。如果我想添加一个名为SumNumber的列,它等于Number1 + Number2 + Number3,那么最好的方法是什么,这样当我更改Number1时,SumNumber中的值会更新?

提前致谢


我快到了,但是我又收到了另一个错误。请参阅下面的代码片段

public partial class MyEntity
{
    public double MyCustomizedProperty{get;set;}

    public MyEntity()
    {
        this.PropertyChanged += Entity_PropertyChanged;
    }

    void Entity_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        switch (e.PropertyName )
        {
            case "Date" :
                MyCustomizedProperty = DateTime.Now.Second;
                ReportPropertyChanged("MyCustomizedProperty");
                break;
        }
    }
}

编译和所有,但当我更改“日期”时,我收到运行时错误:

The property 'SigmaFinal' does not have a valid entity mapping on the entity object. For more information, see the Entity Framework documentation.

我想这是因为该属性不在OnStateManager中。你能告诉我如何解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:3)

我会创建一个Converter来获取所有3个值并返回它们的总和,或者我会扩展Entity Framework类以包含一个额外的属性

以下是扩展EF类以包含额外属性的示例:

public partial class MyEntity
{

    public MyEntity()
    {
        // Hook up PropertyChanged event to alert the UI
        // to update the Sum when any of the Values change
        this.PropertyChanged += MyEntity_PropertyChanged;
    }

    void MyEntity_PropertyChanged(object sender, PropertyChangedEventArgs e)
    {
        switch e.PropertyName
        {
            case "Value1":
            case "Value2":
            case "Value3":
                ReportPropertyChanged("SumValues");
                break;
        }
    }


    public int SumValues
    {
        get
        {
            return Value1 + Value2 + Value3;
        }
    }

}