WPF Command和Event有什么区别?

时间:2010-09-20 08:51:19

标签: .net wpf events command

WPF CommandEvent之间有什么区别?

5 个答案:

答案 0 :(得分:5)

一般来说,事件与命令几乎相同,只是处理用户交互的不同模式。

WPF中的

Commands允许您将命令处理程序的实现移动到buisness层。命令组合启用状态和执行,因此一切都已就绪。通过搜索MVVM模式重新开始。

一开始,命令的实现起来比较复杂,所以如果你的应用程序很小,你应该考虑坚持事件。

答案 1 :(得分:4)

CommandsEvents类似,不同之处在于我们可以将任意数量的UI控件或输入手势与命令相关联,并将该命令绑定到在激活控件或执行手势时执行的处理程序。

Command也跟踪天气是否可用。如果它们不可用,则禁用与该命令关联的所有控件。

调用命令时执行的代码位于命令Execute事件处理程序中。 确定命令的代码是否可以被调用位于命令CanExecute事件处理程序中。

WPF有一些内置的命令:

Command Class          | Example Commands
-----------------------------------------------
ApplicationCommands    | Close, Cut, Copy, Paste, Save, Print
NavigationCommands     | BrowseForward, BrowseBack, Zoom, Search
EditingCommands        | AlignXXX, MoveXXX, SelectXXX
MediaCommands          | Play, Pause, NextTrack, IncreaseVolume, Record, Stop

答案 2 :(得分:2)

您可以在视图(XAML)中绑定WPF命令并接收引发的事件。这样你就不必使用MVVM中禁止使用的代码。

所以绑定元素非常重要。但是它也实现了CanExecute,如果它返回false,通常会使你的控件被禁用,例如如果它是一个按钮。

答案 3 :(得分:1)

在事件中,动作与其来源紧密结合,不能自由重复使用;使用命令,您可以轻松地在一个位置维护各种操作,并在应用程序的任何位置重复使用它们。

  

什么使命令与a不同   附加到a的简单事件处理程序   按钮或计时器就是那个命令   分离语义和   来自其逻辑的行动的始发者。这允许多个不同的源调用相同的命令逻辑,并允许为不同的目标定制命令逻辑。

取自 - 指挥概述:http://msdn.microsoft.com/en-us/library/ms752308(v=VS.90).aspx

本文解释了命令的概念,在使用命令之前必须阅读。

这个SO线程也提供了很多有用的信息。 :

Custom WPF command pattern example

答案 4 :(得分:0)

粗略地说,CommandObject(按钮,菜单)启用/禁用状态和操作的封装。

Command的限制:

  • 多播(您可以使用多重绑定但不常见,并且感觉不如事件多播)
  • 需要2步才能点亮灯泡。 (如果您的按钮始终启用,那么您只是浪费代码。)