根据 ObservableCollection 中项目的 属性 使用 CanExecute 创建命令

Create Command with CanExecute based on the Property of an item in an ObservableCollection

我有一个 属性 类型为 ObservableCollection<T> 的 ViewModel,名为 Items,其中 T 是一个 class,其中包含一个 属性调用类型 boolIsSelected,它在值更改时引发 PropertyChanged 事件。

我有一个绑定到 CommandButton,如果 Items' [=15= 中的至少一个,我希望启用 Button ] 属性 是 true,否则禁用。 我正在尝试使用 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));