Ниже приведен универсальный класс, который может использоваться как свойство и реализует INotifyPropertyChanged, используемый привязанными элементами управления для захвата изменений в значении свойства.
public class NotifyValue<datatype> : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged = delegate { };
datatype _value;
public datatype Value
{
get
{
return _value;
}
set
{
_value = value;
PropertyChanged.Invoke(this, new PropertyChangedEventArgs("Value"));
}
}
}
Это можно объявить так:
public NotifyValue<int> myInteger = new NotifyValue<int>();
и присваивается текстовому полю, как это
Textbox1.DataBindings.Add(
"Text",
this,
"myInteger.Value",
false,
DataSourceUpdateMode.OnPropertyChanged
);
.. где «Текст» - это свойство текстового поля, «это» - текущий экземпляр формы.
Класс не должен наследовать класс INotifyPropertyChanged. Как только вы объявляете событие типа System.ComponentModel.PropertyChangedEventHandler, событие изменения класса будет подписано блоком данных элементов управления