И я написал небольшой инструмент, который генерирует весь необходимый код свойства в частичном классе. Это ни в коем случае не элегантное решение, но оно работает :)
еализации интерфейса INotifyPropertyChanged вы отвечаете за вызов события PropertyChanged каждый раз, когда свойство обновляется в классе.
Это обычно приводит к следующему коду:
public class MyClass: INotifyPropertyChanged
private bool myfield;
public bool MyField
{
get { return myfield; }
set
{
if (myfield == value)
return;
myfield = value;
OnPropertyChanged(new PropertyChangedEventArgs("MyField"));
}
}
public event PropertyChangedEventHandler PropertyChanged;
private void OnPropertyChanged(PropertyChangedEventArgs e)
{
PropertyChangedEventHandler h = PropertyChanged;
if (h != null)
h(this, e);
}
}
Это12 строк за собственность.
Было бы намного проще, если бы можно было украсить автоматические свойства следующим образом:
[INotifyProperty]
public double MyField{ get; set; }
Но, к сожалению, это невозможно (см.эта почта на мсдн например)
Как я могу уменьшить количество кода, необходимого для каждого свойства?