【发布时间】:2011-07-19 22:34:33
【问题描述】:
我开始在 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 时不会重新评估它。谁能告诉我一个很好的例子,说明如何绑定ReactiveCommand 的canExecute 属性,以便在这种情况下自动重新评估它?
【问题讨论】:
标签: silverlight mvvm system.reactive reactiveui