我开始在 Silverlight 项目中使用 ReactiveUI 框架,并且需要一些使用 ReactiveCommands 的帮助。
在我的视图模型中,我有一些看起来大致像这样的东西(这只是一个简化的例子):
public class MyViewModel : ReactiveObject
{
private int MaxRecords = 5;
public ReactiveCommand AddNewRecord { get; protected set; }
private ObservableCollection<string> _myCollection = new ObservableCollection<string>();
public ObservableCollection<string> MyCollection
{
get
{
return _myCollection;
}
set
{
_myCollection = value;
raiseCollectionChanged("MyCollection");
}
}
MyViewModel()
{
var canAddRecords = Observable.Return<bool>(MyCollection.Count < MaxRecords);
AddNewRecord = new ReactiveCommand(canAddRecords);
AddNewRecord.Subscribe(x =>
{
MyCollection.Add("foo");
}
}
}
该canAddRecords
函数在第一次ReactiveCommand
创建时被评估,但是当项目被添加到时它不会被重新评估MyCollection
。谁能告诉我一个很好的例子,说明如何绑定canExecute
a 的属性,ReactiveCommand
以便在这种情况下自动重新评估它?