Используя Fody.PropertyChanged, как использовать со свойством BindingList<T>?
У меня есть следующие классы, использующие Fody.PropertyChanged weaving:
[ImplementPropertyChanged]
public class OtherClass : INotifyPropertyChanged
{
#pragma warning disable 67
public event PropertyChangedEventHandler PropertyChanged;
#pragma warning restore 67
public int SomeValue { get; set; }
}
[ImplementPropertyChanged]
public class MyClass : INotifyPropertyChanged
{
#pragma warning disable 67
public event PropertyChangedEventHandler PropertyChanged;
#pragma warning restore 67
public string SomeText { get; set; }
public BindingList<OtherClass> Others { get; private set; }
public MyClass ()
{
Others = new BindingList<OtherClass>();
}
}
От класса, потребляющего MyClass, я не получаю событие PropertyChanged.
Что здесь не так?
1 ответ
Попробуйте добавить событие ListChanged класса BindingList, чтобы вызвать событие PropertyChanged:
public MyClass() {
this.Others = new BindingList<OtherClass>();
this.Others.ListChanged += Others_ListChanged;
}
void Others_ListChanged(object sender, ListChangedEventArgs e) {
if (this.PropertyChanged != null) {
this.PropertyChanged(this, new PropertyChangedEventArgs("Others"));
}
}
Мой OtherClass не должен был реализовывать событие INotifyPropertyChanged:
[ImplementPropertyChanged]
public class OtherClass {
public int ID { get; set; }
}