复杂对象有一组对象,例如
public class MyClass
{
public string Name { get;set;}
public string Description {get;set;}
}
public class MyViewModel
{
public ObservableCollection<MyClass> MyClasses {get;set;}
}
我想创建一个observable并知道其中一个MyClasses集合项已更改(名称或描述)。
答案 0 :(得分:3)
查看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!"))