@bagos

Не отрабатывает setter забиндиного свойства, с чем может быть связанно?

Имеется класс с N свойствами, все они забиндены с нужными контролами на форме (WPF).
Далее создана структура
public struct MyStruct
{
  public int Age {get;set;}
  public string Name {get;set;}
}

private MyStruct _mm;
public MyStruct MM
{
get {return _mm;}
}
set 
{
_mm = value; 
OnPropertyChanged("MM");
}


К контролам бинд = MM.Name и MM.Age
Данные отображаются. Но при попытке изменить их в контроле, скидываются на старые значения. При изменении значений в поле, дебаггер игнорирует сеттер. Может проблема в том что создал экземпляр структуры?
При загрузке создается
ММ = new MyStruct 
{
name = "123",
 age = 456
};
  • Вопрос задан
  • 117 просмотров
Решения вопроса 1
@raincons
Разумеется, все дело в том, что это структура. А структуры в c# - это value type.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Alexander1705
Вы разместили блок set вне блока свойства.
public MyStruct MM
{
    get {return _mm;}
}
set 
{
    _mm = value; 
    OnPropertyChanged("MM");
}

Вот так всё работает:
public MyStruct MM
{
    get {return _mm;}

    set 
    {
        _mm = value; 
        OnPropertyChanged("MM");
    }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы