命令(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 的元素(如果 CanExecute
为 false
,则按钮不会执行任何操作)。
- 当你想添加一个
Command
时,你将把它绑定到你的 DataContext(ViewModel,如果你实现 MVVM 模式)。相反,当您添加一个简单的事件处理程序(如 MyButton_Click)时,代码将被放置在您的代码隐藏中,这是您的主要 window 背后的逻辑.这意味着实现一个 Command
,根据我的说法,您将在一个地方(ViewModel)拥有您需要修改的所有内容,而不是散布在项目中各处的逻辑.
当然,您可以使用任何您想要的,我的观点只是为了让您深入了解这些不同的实现,您必须考虑哪种解决方案适合您,同时还要考虑需求你已经被给予(如:"Don't use event handlers"或"The Command is too advanced, let's just use something simple"等)and/or你项目中的其他约束。
什么时候应该使用 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 的元素(如果CanExecute
为false
,则按钮不会执行任何操作)。 - 当你想添加一个
Command
时,你将把它绑定到你的 DataContext(ViewModel,如果你实现 MVVM 模式)。相反,当您添加一个简单的事件处理程序(如 MyButton_Click)时,代码将被放置在您的代码隐藏中,这是您的主要 window 背后的逻辑.这意味着实现一个Command
,根据我的说法,您将在一个地方(ViewModel)拥有您需要修改的所有内容,而不是散布在项目中各处的逻辑.
当然,您可以使用任何您想要的,我的观点只是为了让您深入了解这些不同的实现,您必须考虑哪种解决方案适合您,同时还要考虑需求你已经被给予(如:"Don't use event handlers"或"The Command is too advanced, let's just use something simple"等)and/or你项目中的其他约束。