2017-08-24 103 views
0

訂閱在ReactiveList中更改的任何字段有任何方法嗎?ReactiveUI訂閱ReactiveList中的屬性更改

可以說我有類:

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中發生更改。

有什麼辦法嗎?

回答

3

如果設置ReactiveList<T>到真正的ChangeTrackingEnabled性能,提高在Prop1Prop2屬性的制定者的PropertyChanged事件中,你可以訂閱ReactiveList<T>ItemChanged

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

注意,A類必須實現INotifyPropertyChanged接口。