Используя 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; }
}
Другие вопросы по тегам