如何使用 ReactiveUI 从 CommandParameter 中确定 "canExecute"?
How to determine "canExecute" from the CommandParameter with ReactiveUI?
我可以创建一个这样的命令来检查我的视图模型的某些 属性 是否可以执行:
AddNewSectionCommand = ReactiveCommand
.CreateFromTask(() => AddNewSectionAsync(NewSectionTitle),
this.WhenAny(x => x.NewSectionTitle, x => !string.IsNullOrWhiteSpace(x.Value)));
是否也可以对我通过 WPF 传入的 CommandParameter
执行此操作,如果可以,怎么做?因为有时我想直接使用 UI 中的东西作为命令的参数,但也想在之前检查有效性。到现在为止,我必须通过将值绑定到视图模型 属性 并使用上面的内容来完成此操作,这使我的视图模型充满了很多多余的东西。
不,没有 canExecute 的 CommandParameter。 vm 属性 路线是要走的路。所有 ReactiveUI“入门”类型的示例都一直使用这种方法(例如 username/password),这是有道理的,因为 vm 应该负责确定可执行性。主要原因之一是单元测试更容易。所以我觉得添加到 vm 中的额外 property/properties 是非常值得的,一点也不多余。
我可以创建一个这样的命令来检查我的视图模型的某些 属性 是否可以执行:
AddNewSectionCommand = ReactiveCommand
.CreateFromTask(() => AddNewSectionAsync(NewSectionTitle),
this.WhenAny(x => x.NewSectionTitle, x => !string.IsNullOrWhiteSpace(x.Value)));
是否也可以对我通过 WPF 传入的 CommandParameter
执行此操作,如果可以,怎么做?因为有时我想直接使用 UI 中的东西作为命令的参数,但也想在之前检查有效性。到现在为止,我必须通过将值绑定到视图模型 属性 并使用上面的内容来完成此操作,这使我的视图模型充满了很多多余的东西。
不,没有 canExecute 的 CommandParameter。 vm 属性 路线是要走的路。所有 ReactiveUI“入门”类型的示例都一直使用这种方法(例如 username/password),这是有道理的,因为 vm 应该负责确定可执行性。主要原因之一是单元测试更容易。所以我觉得添加到 vm 中的额外 property/properties 是非常值得的,一点也不多余。