Entity Datagrid: лучший способ добавить вычисленные значения? - PullRequest
2 голосов
/ 30 сентября 2011

У меня есть сетка данных WPF, привязанная к источнику collectionview, который сам основан на запросе объекта

В моей сетке, например, у меня есть 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 Ответ

3 голосов
/ 30 сентября 2011

Я бы либо создал 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;
        }
    }

}
...