WPF命令与事件优点/缺点

WPF*_*ser 47 wpf

谁能告诉我在WPF中使用命令与事件有什么好处.命令或事件是否会发生内存泄漏?什么是最快的方法.它们有什么缺点.

And*_*rii 39

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

  1. 命令没有链接到调用者,因此相同的命令不依赖,可以从菜单项,工具栏按钮,键盘等调用.
  2. 命令提供对基于命令状态启用/禁用所有相关UI控件的支持(可以执行与否)

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

我没有听说过任何与命令相关的内存泄漏.

事件可能更快,但差异不应该很大 - 我已经在我的项目上使用命令2年,并且没有任何性能问题.

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

  • 一个更好的论点是事件处理程序只能在后面的代码中管理,你不能简单地将它移动到ViewModel.命令提供松耦合. (4认同)
  • 你不能为工具栏按钮,键盘等订阅相同的事件处理程序吗?这些似乎是为您的代码添加整层复杂性的弱理由. (2认同)

T.J*_*aer 32

但是虽然命令和事件可以重叠,但它们是两个不同的东西.命令说"做这个!",而事件说"这刚刚发生!".因此,您可能有一个CloseWindowCommand用于关闭窗口,但窗口可能有一个ClosingEvent,它告诉正在关闭的订阅对象.

  • @Wolle在"做这件事"之前说"这件事刚刚发生"的英文 正是我所说的.我从来没说过他错了. (7认同)
  • 但有趣的是,事件将在命令之前执行. (4认同)

Nim*_*gar 5

命令是一种更标准的集成事件的方式。可能比事件更有用,因为在它们的帮助下,您可以定义单个任务(命令)并从不同的地方使用它。例如,您可以定义一个保存命令并同时使用一个菜单项、一个上下文菜单项和一个按钮来使用它。这样你就可以将任务集中起来。命令也支持数据绑定,这是 WPF 应用程序的一个非常强大的功能。据我所知,命令会导致某些类型的内存泄漏,但您可以通过使用许多变通方法来避免这种情况。我必须补充一点,MVVM 设计模式也使用命令作为设计 WPF 应用程序的标准方法。处理事件要简单得多,但命令提供了非常强大的设计。但是你现在必须知道你不能总是使用命令而不是事件。