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

Difference between Command (ICommand) and Click event

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

F.e。如果我的 UWP 应用程序中有 Button,我应该使用什么?

When should I use the Command and when to use the Click event?

你的问题很宽泛,我会简单地回答:“这取决于”。 因为:

  • Command 实现了 ICommand 接口,这意味着要向您的应用程序添加更多代码,但这通常不会改变。相反,事件处理程序不需要任何接口实现。
  • 对于您想要的每个命令,您必须提供处理点击的代码和 CanExecute 逻辑,以说明命令何时可以执行。这在简单的事件处理程序(如 MyButton_Click)中没有请求。这意味着,使用 Command,您可以更好地控制 UI 的元素(如果 CanExecutefalse,则按钮不会执行任何操作)。
  • 当你想添加一个 Command 时,你将把它绑定到你的 DataContextViewModel,如果你实现 MVVM 模式)。相反,当您添加一个简单的事件处理程序(如 MyButton_Click)时,代码将被放置在您的代码隐藏中,这是您的主要 window 背后的逻辑.这意味着实现一个 Command,根据我的说法,您将在一个地方(ViewModel)拥有您需要修改的所有内容,而不是散布在项目中各处的逻辑.

当然,您可以使用任何您想要的,我的观点只是为了让您深入了解这些不同的实现,您必须考虑哪种解决方案适合您,同时还要考虑需求你已经被给予(如:"Don't use event handlers"或"The Command is too advanced, let's just use something simple"等)and/or你项目中的其他约束。