命令(ICommand)和点击事件的区别

14

什么时候应该使用Command,什么时候应该使用Click事件?

例如,如果我在我的UWP应用程序中有一个Button,我应该使用哪个?


5
命令与您的视图模型绑定,而单击事件是在代码后台编写的。 - Ehsan Sajjad
6
使用命令(Command)的另一个好处是它具有CanExecute功能,这样当无法执行操作时,您的UI可以将按钮变灰。为了最佳实践,您应该使用ICommand接口,这使得您的代码在长期维护方面更加清晰易懂,但如果您只需要一个简单应用程序中的1个按钮,那么只使用单击事件也没有太大问题。 - mbrdev
4
Command的另一个优点是可以将同一命令绑定到多个UI元素上(例如,您可以将同一命令绑定到菜单项和工具栏按钮上)。 - Joe
1个回答

32
什么时候应该使用命令,什么时候应该使用单击事件? 你的问题很广泛,我只能简单地回答:“这取决于具体情况”。 因为:
  • Command 实现 ICommand 接口,这意味着需要添加更多代码到应用程序,但通常情况下不会改变。相反,事件处理程序不需要任何接口实现。
  • 对于每个想要的命令,您都必须提供将处理单击和 CanExecute 逻辑的代码,以指示何时可以执行该命令。这在简单的事件处理程序(如 MyButton_Click)中不是必需的。这意味着使用 Command,您将对 UI 元素有更多控制权(如果 CanExecutefalse,则按钮不会执行任何操作)。
  • 当您想要添加一个 Command 时,您将把它绑定到您的 DataContext(如果您实现了 MVVM 模式,则为 ViewModel)。相反,当您添加一个简单的事件处理程序(如 MyButton_Click)时,代码将被放置在您的代码后台,即您主窗口的逻辑。在我看来,这是最好的方式,因为您只需要在一个地方(ViewModel)进行修改所需的所有内容,而不是在项目中随处散布的逻辑。

说到底,你最好使用适合自己的东西,考虑到你收到的要求(例如:“不要使用事件处理程序”或“命令太高级了,我们只使用简单的东西”等),以及/或者项目中的其他限制。


2
简单易懂的好答案 - Neelam Prajapati
1
好的解释。 :) - Naveen Kumar V

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接