我可以创建这样的命令,该命令检查我的视图模型的某些属性是否可以执行:
AddNewSectionCommand = ReactiveCommand
.CreateFromTask(() => AddNewSectionAsync(NewSectionTitle),
this.WhenAny(x => x.NewSectionTitle, x => !string.IsNullOrWhiteSpace(x.Value)));
是否也可以对我通过WPF传递的CommandParameter
进行此操作,如果可以,怎么办?因为有时我直接想在UI中使用某些内容作为命令的参数,但同时也想先检查有效性。到现在为止,我必须通过将值绑定到视图模型属性并使用上面的方法来完成此操作,这会使我的视图模型杂乱无章。
答案 0 :(得分:1)
否,canExecute没有CommandParameter。 vm属性路由是必经之路。所有ReactiveUI“入门”类型示例都始终使用此方法(例如,用户名/密码),这是有道理的,因为vm应该负责确定可执行性。主要原因之一是单元测试要容易得多。因此,我觉得添加到虚拟机中的额外属性非常值得,并且一点也不多余。