Уведомление об изменении свойства не работает без назначения нового экземпляра свойству - PullRequest
0 голосов
/ 12 декабря 2018

Предположим, у меня есть свойство в классе

    private InfoDetail dialogInfo; 
    public InfoDetail DialogInfo
            {
                get
                {
                     return this.InfoDetail;
                }

                set
                {
                    this.InfoDetail = value;
                    this.NotifyPropertyChanged();
                }
            }

И я инициализирую его один раз.когда я присваиваю свойство такого типа, как this.InfoDetail.Index = 2;, оно не уведомляет и не достигает точки останова. Но когда я создаю новый экземпляр и присваиваю ему, оно срабатывает, как

InfoDetail obj = new InfoDetail();
obj.index = 2;
this.InfoDetail = obj

, это правильное поведение илия делаю что-то не так.

1 Ответ

0 голосов
/ 12 декабря 2018

когда я присваиваю свойство этого типа this.InfoDetail.Index = 2;, оно не уведомляет

Это правильное поведение.значение самого свойства InfoDetail не изменяется, оно остается тем же экземпляром, что и раньше, но с другим значением индекса.

Чтобы отправлять уведомления об изменении индекса, InfoDetail должен реализовать INotifyPropertyChanged и вызвать PropertyChanged.событие в инсталляторе индекса.Так же, как класс делает со свойством "DialogInfo".

В качестве второй опции вы можете временно сбросить DialogInfo до нуля, а затем восстановить предыдущее значение.В этом случае все связанные свойства из InfoDetail обновятся - дважды.

var info = this.InfoDetail;
info.Index = 2;
this.InfoDetail = null;
this.InfoDetail = info;
...