使用 CanExecute 创建基于 ObservableCollection 中项的属性的命令



我有一个 ViewModel,其属性类型为ObservableCollection<T>,名为Items,其中T是一个类,其中包含一个名为IsSelectedbool类型的属性,当其值更改时,该属性会引发PropertyChanged事件。

我有一个绑定到CommandButton,如果至少trueItems'IsSelected属性中的一个被禁用,我希望启用该Button。 我正在尝试使用来自 ReactiveUI 的ReactiveCommand来执行此操作,因此它看起来像这样:

this.SubmitCommand = ReactiveCommand.CreateFromTask(SubmitItems,
this.WhenAnyValue(x => x.Items).Select(x => x.Any(i => i.IsSelected));

但这似乎不起作用,我认为这是因为Subscription没有监视ItemIsSelected属性,因此当选择Item时,不会通知Subscription。 无论如何,任何帮助将不胜感激。 我认为这个 ReactiveUI 的东西真的很酷,我正在努力学习它。

我会使用DynamicData。

var canExecute = Items.ToObservableChangeSet()
.AutoRefreshOnObservable(
x => x.WhenAnyValue(item => item.IsSelected))
.ToCollection()
.Select(x => x.Any(item => item.IsSelected));

最新更新