Я пишу следующий код, чтобы связать данные из фонового объекта с пользовательским интерфейсом WinForm. Я использую интерфейс INotifyPropertyChanged, чтобы уведомить пользовательский интерфейс об изменении свойства. Но я не видел, чтобы какой-либо обработчик событий был явно назначен событию PropertyChanged. И я проверил свою сборку с помощью .NET Reflector и до сих пор не нашел соответствующего обработчика событий? Где находится обработчик события PropertyChanged? Это очередная хитрость компилятора Microsoft?
Вот код фонового объекта:
public class Calculation :INotifyPropertyChanged
{
private int _quantity, _price, _total;
public Calculation(int quantity, int price)
{
_quantity = quantity;
_price = price;
_total = price * price;
}
public event PropertyChangedEventHandler PropertyChanged;
private void NotifyPropertyChanged(String info)
{
if (PropertyChanged != null)// I DIDN'T assign an event handler to it, how could
// it NOT be null??
{
PropertyChanged(this, new PropertyChangedEventArgs(info));
}
}
public int Quantity
{
get { return _quantity; }
set
{
_quantity = value;
//Raise the PropertyChanged event
NotifyPropertyChanged("Quantity");
}
}
public int Price
{
get { return _price; }
set
{
_price = value;
//Raise the PropertyChanged event
NotifyPropertyChanged("Price");
}
}
public int Total
{
get { return _quantity * _price; }
}
}
Большое спасибо!