我有一个 ViewModel,其属性类型为ObservableCollection<T>
,名为Items
,其中T
是一个类,其中包含一个名为IsSelected
的bool
类型的属性,当其值更改时,该属性会引发PropertyChanged
事件。
我有一个绑定到Command
的Button
,如果至少true
Items'
IsSelected
属性中的一个被禁用,我希望启用该Button
。 我正在尝试使用来自 ReactiveUI 的ReactiveCommand
来执行此操作,因此它看起来像这样:
this.SubmitCommand = ReactiveCommand.CreateFromTask(SubmitItems,
this.WhenAnyValue(x => x.Items).Select(x => x.Any(i => i.IsSelected));
但这似乎不起作用,我认为这是因为Subscription
没有监视Item
的IsSelected
属性,因此当选择Item
时,不会通知Subscription
。 无论如何,任何帮助将不胜感激。 我认为这个 ReactiveUI 的东西真的很酷,我正在努力学习它。
我会使用DynamicData。
var canExecute = Items.ToObservableChangeSet()
.AutoRefreshOnObservable(
x => x.WhenAnyValue(item => item.IsSelected))
.ToCollection()
.Select(x => x.Any(item => item.IsSelected));