WPF命令与事件优点/缺点

任何人都可以告诉我在WPF中使用命令vs事件的优点。 命令或事件是否运行到内存泄漏? 什么是最快的方法。 他们的缺点是什么?

与事件处理程序相比,命令提供了两个主要优点:

  1. 命令没有链接到调用者,所以相同的命令是不依赖的,可以从菜单项,工具栏button,键盘等调用。
  2. 命令提供支持根据命令的状态启用/禁用所有相关的UI控件(可以执行或不执行)

我更喜欢在真正的项目中使用命令,特别是如果你想使用MV-VM的话。

我还没有听说任何与命令有关的内存泄漏。

事件可能会更快,但差异不应该是显着的 – 我已经在我的项目上使用了2年的命令,并没有任何性能问题与他们。

有关命令的更多详细信息,请参阅命令概述 ( 存档 )( v4 )

但是,虽然命令和事件可以重叠,但它们是两回事。 命令说“做这个!”,而事件说“这刚刚发生!”。 所以你可能有一个CloseWindowCommand来closures一个窗口,但是窗口可能有一个ClosingEvent来告诉正在closures的订阅对象。

命令是整合事件的更加标准的方式。 可以比事件更有用,因为在他们的帮助下,你可以定义一个单一的任务(命令),并从不同的地方使用它。 例如你可以定义一个保存命令,并使用一个菜单项,一个上下文菜单项和一个button来同时使用它。 这样你可以集中任务。 也命令支持数据绑定这是WPF应用程序的一个非常强大的function。 据我所知,命令导致某些types的内存泄漏,但是可以通过使用许多解决方法来避免这种情况。 我必须补充一点,MVVMdevise模式也使用命令作为deviseWPF应用程序的标准方法。 处理事件要简单得多,但是命令提供了很多强大的devise。 但是现在你必须不能总是使用命令而不是事件。 有任何许多地方,你只能使用事件。

另外WPF4.0允许绑定到命令定义。 这使得从视图模型中暴露命令变得更加容易,极大地帮助您将逻辑从UI关注点分离出来。

命令是路由事件。