Двусторонняя привязка данных без XAML

У меня есть класс, который я хочу использовать для обновления текстового поля при изменении одного из его свойств. Я также хочу иметь возможность изменять свойство классов при изменении текстового поля. Другими словами, я хочу иметь двустороннюю привязку данных. Я посмотрел в Интернете, и для всех примеров требуется файл XAML. Поскольку я не знаком с XAML, я хотел бы держаться подальше от этого, если это возможно.

Возможно ли двустороннее связывание данных с классом без использования XAML?

Обновлять:

Я нашел этот http://msdn.microsoft.com/en-us/library/ms743695%28v=vs.110%29.aspx, и, похоже, это работает. Однако я не совсем понимаю, что он делает.

Точнее, я не понимаю, как PropertyChanged и OnPropertyChanged связаны друг с другом.


person user2970916    schedule 02.12.2014    source источник
comment
это приложение WPF?   -  person Sajeetharan    schedule 02.12.2014
comment
Нет, это приложение WinForm (C#).   -  person user2970916    schedule 02.12.2014
comment
Вы не возражаете против использования фреймворка ReactiveUI? Хотя я не использовал его для WinForms, он поддерживает его. stackoverflow.com/questions/24768640/   -  person kenny    schedule 02.12.2014
comment
Вам нужно узнать о событиях С#.   -  person SLaks    schedule 02.12.2014


Ответы (1)


В C# WPF вы получаете PropertyChanged при реализации INotifyPropertyChanged.

Итак, если вы пишете

PropertyChanged(this,  new PropertyChangedEventArgs("PersonName"));

Вы даете наблюдателю (XAML) сигнал о том, что свойство PersonName изменилось, и оно обновит все, например. UIElement, связанные с этим свойством.

С участием

 protected void OnPropertyChanged(string name)
  {
      PropertyChangedEventHandler handler = PropertyChanged;
      if (handler != null)
      {
          handler(this, new PropertyChangedEventArgs(name));
      }
  }

вы перегружаете имя свойства (например, PersonName) в виде строки, чтобы указать, какое свойство изменилось.

С if(handler != null) вы говорите, что отправляете сигнал только в том случае, если есть какой-либо Наблюдатель.

Если да, то в следующей строке вы действительно даете Сигнал.

person Andreas Weswaldi    schedule 02.12.2014
comment
Спасибо. У меня было ощущение, что я получаю PropertyChanged из INotifyPropertyChanged. Когда создается Наблюдатель? - person user2970916; 02.12.2014
comment
Как только UIElement в XAML имеет привязку к этому объекту, например. свойство Text TextBox - person Andreas Weswaldi; 02.12.2014