ReactiveUI 订阅 ReactiveList 中的 属性 变化

ReactiveUI subscribe to property change in ReactiveList

有什么方法可以订阅 ReactiveList 中更改的任何字段?

假设我有 class:

public class A
{
        public SomeOtherClass Prop1 { get; set; }
        public SomeOtherClass Prop2 { get; set; }
}

ViewModel

public class MyViewModel
{
    private ReactiveList<A> elements;

    public MyViewModel()
    {
        elements = new ReactiveList<A>();
    }
}

此列表绑定到 DataGrid。我想做的是 WhenAnyValue 之类的事情,但是当 Prop1Prop2elements.

中的任何 A 中发生更改时

有什么办法吗?

如果您将 ReactiveList<T>ChangeTrackingEnabled 属性 设置为 true 并在 Prop1 和 [= 的设置器中引发 PropertyChanged 事件您可以订阅 ReactiveList<T>ItemChanged 的 15=] 个属性:

public MyViewModel()
{
    elements = new ReactiveList<A>() { ChangeTrackingEnabled = true };
    elements.ItemChanged.Subscribe(args =>
    {
        A a = args.Sender;
        string changedProperty = args.PropertyName;
    });
}

注意 A class 必须实现 INotifyPropertyChanged 接口。