Wpf ICommand vs IValueConverter

Wpf ICommand vs IValueConverter,wpf,prism,Wpf,Prism,我是WPF的新手。我目前正在WPF中开发一个应用程序,我必须根据数据库中的值启用/禁用一个按钮。我在网上找到了使用命令和转换器的解决方案。那么,哪种解决方案更好?为什么?在使用按钮时,最好使用命令实现,因为它是内置的 您可以为谓词提供命令参数,转换器是您需要的 在你不想使用它的地方写下、举例和放置 使用CanExecute总结命令将更具可重用性和可维护性 既然您是WPF新手,我真心建议您也开始学习Rx扩展和反应式UI。 反应式用户界面提供了一个命令框架,在复杂的场景中,您的命令依赖于许多标志/条

我是WPF的新手。我目前正在WPF中开发一个应用程序,我必须根据数据库中的值启用/禁用一个按钮。我在网上找到了使用命令和转换器的解决方案。那么,哪种解决方案更好?为什么?

在使用按钮时,最好使用命令实现,因为它是内置的 您可以为谓词提供命令参数,转换器是您需要的 在你不想使用它的地方写下、举例和放置


使用CanExecute总结命令将更具可重用性和可维护性

既然您是WPF新手,我真心建议您也开始学习Rx扩展和反应式UI。 反应式用户界面提供了一个命令框架,在复杂的场景中,您的命令依赖于许多标志/条件,这些标志/条件可以通过lambda函数和可观察值来计算

如果你想创建一个复杂的应用程序,你一定要开始学习MVVM。对于简单的应用程序,请使用MVVM Light。对于更复杂的WPF应用程序,您可以选择反应式UI或Microsoft PRISM

看一看。在reactiveui的主页中有一些命令示例,但您也可以在中获得更多示例

例如,您可以这样声明ICommand:

 DisplayCommand = new ReactiveCommand(this.WhenAny(x => x.Name, x => !string.IsNullOrEmpty(x.Value)));
请看一下文档

如前所述,在这种情况下,您应该使用命令而不是转换器


此外,如果您要侦听的事件是除单击之外的其他事件,请使用系统。如所述的交互行为/操作。

DataTriggers
在这种情况下也很方便,但如果仅用于按钮,则
ICommand
可能是最佳选项。命令将完成此任务。