看看docs, especially Using Change Tracking section。
简而言之:
1)使用ReactiveList
代替ObservableCollection
,并设置ChangeTrackingEnabled
为true:
// in MyViewModel constructor
this.MyClasses = new ReactiveList<MyClass>()
{
ChangeTrackingEnabled = true,
};
2)MyClass
应该提高PropertyChanged
事件。要做到这一点最简单的方法是让它从ReactiveObject得出:
public class MyClass : ReactiveObject
{
private string _name;
public string Name
{
get { return _name; }
set { this.RaiseAndSetIfChanged(ref _name, value);
}
private string _description;
public string Description
{
get { return _description; }
set { this.RaiseAndSetIfChanged(ref _description, value);
}
}
3)使用列表的ItemChanged
财产
this.MyClasses.ItemChanged.Subscribe(_ => Console.WriteLine("Changed!"))