ICommand vs IValueConverter

时间:2013-09-04 02:03:31

标签: wpf prism

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

2 个答案:

答案 0 :(得分:1)

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

总结一个带有CanExecute的命令将更具可重用性和可维护性。

答案 1 :(得分:0)

由于您是WPF的新手,我真的建议您开始学习Rx扩展和Reactive UI。 Reactive UI提供了一个命令框架,它可以在复杂场景中真正帮助您,在这些场景中,命令依赖于可以通过lambda函数和Observables计算的许多标志/条件。

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

看看Reactive UI here。在Reactive UI的主页中有一些Command示例,但您也可以在here

中获取更多示例

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

 DisplayCommand = new ReactiveCommand(this.WhenAny(x => x.Name, x => !string.IsNullOrEmpty(x.Value)));

查看文档。

如前所述,您应该在此方案中使用Command而不是转换器。

此外,如果你想要收听的事件是除了点击之外的其他事件,那么请按照here所述使用System.Interactive行为/动作。