Задать вопрос

Как правильно использовать INotifyPropertyChanged для извещения «родителя» о изменение свойства экземпляра?

Проблема такая: необходимо изменять значения в коллекции при изменении хотя бы одного из полей в объекте. Если ближе к самой идеи кода, то при изменении длины одного из участков трубы, нужно пересчитать другие.

Архитектура в коде такая: родительский абстрактный класс public abstract class AbstractTube от которого наследуется класс public class TubingStage : AbstractTube и создается лист из труб
public class CollectionTubingStage : ObservableCollection<TubingStage>, INotifyPropertyChanged
    {     
        
    }

Есть обработчик события и само событие в классе TubingStage:
public event PropertyChangedEventHandler PropertyChanged;
        private void NotifyPropertyChanged(String info)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(info));
            }
        }


И код свойства в том же классе
public override double Lenght
        {
            get
            { return TLenght; }
            set
            { 
            TLenght = value;
            NeedAutoAlign = true;
            NotifyPropertyChanged("Lenght of stage has been changed!");
            }
        }


Как мне правильно воспользоваться INotifyPropertyChanged для этого? Не понятно как из экземпляра коллекции получить доступ к самой коллекции, для ее модификации.
  • Вопрос задан
  • 3957 просмотров
Подписаться 3 Оценить Комментировать
Решение пользователя Рифат К ответам на вопрос (2)
@serber
1. Класс ObservableCollection уже реализует интерфейс INotifyPropertyChanged.
2. Вы не правильно вызываете метод NotifyPropertyChanged. В качестве параметра должно передаваться имя свойства, которое было изменено. Т.е. должно быть так
NotifyPropertyChanged("Lenght");
3. Правильнее писать Length, а не Lenght
Ответ написан