У меня есть DataGrid с четырьмя колоннами:Datagrid ошибка - Viemodel свойство не может быть заселена
Datagrid заполняется с помощью наблюдаемой коллекции. Вид модели:
public class PlanningResult : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
public double A { get; set; }
public double B { get; set; }
public double C { get; set; }
public double D { get; set; }
}
ObservableCollection<PlanningResult> populatePatternData = new ObservableCollection<PlanningResult>();
public ObservableCollection<PlanningResult> PopulatePatternData
{
get { return populatePatternData; }
set
{
populatePatternData = value;
base.OnPropertyChanged("StringList");
}
}
Вот требование для меня: - Column C
и Column D
должны иметь одинаковые значения, если пользователь не вносит изменения в Column A
или Column B
. В этом случае Column D
должен стать ColumnA+ColumnB
.
На основании приведенного выше условия, я могу внести изменения в модели представления, как
public class PlanningResult : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged([CallerMemberName] String propertyName = "")
{
if (PropertyChanged != null)
PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
}
private double _a;
public double A
{
get { return _a; }
set { _a = value; NotifyPropertyChanged(); NotifyPropertyChanged("D"); }
}
private double _b;
public double B
{
get { return _b; }
set { _b = value; NotifyPropertyChanged(); NotifyPropertyChanged("D"); }
}
public double D { get { return _a + _b; } }
public double C {get;set;}
}
вопрос, который я лицо, что я не в состоянии заполнить columnD с «
initial values = values same as columnC
». Как предоставить начальные значения столбцу D?Когда я пытаюсь сделать это с помощью коллекции, я получаю сообщение об ошибке, как:
property D cannot be assigned to -- it is read only
thnks. Вариант проблемы: можно ли вызвать функцию, когда А или В меняются, что-то делает? @ mm8 – user7157732
Вы можете вызвать любой метод, который вы хотите, в настройках свойств A и B так же, как вы вызываете метод NotifyPropertyChanged. – mm8