WPF命令与事件优点/缺点

时间:2010-06-01 20:08:31

标签: wpf

任何人都可以告诉我在WPF中使用命令与事件有什么好处。 命令或事件是否会发生内存泄漏? 什么是最快的方法。它们有什么缺点。

5 个答案:

答案 0 :(得分:38)

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

  1. 命令未链接到 调用者,所以同样的命令不是 依赖,可以从中调用 菜单项,工具栏按钮,键盘, 等。
  2. 命令提供支持 启用/禁用所有相关的UI 控制基于的状态 命令(可以执行与否)
  3. 我更喜欢在真实项目中使用命令,特别是如果你想使用M-V-VM。

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

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

    有关命令的详细信息,请参阅Commanding Overviewarchive)(v4

答案 1 :(得分:30)

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

答案 2 :(得分:3)

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

答案 3 :(得分:0)

此外,WPF4.0允许绑定命令定义。这使得从视图模型公开命令变得更加容易,最大程度地帮助您将逻辑与UI关注点分离。

答案 4 :(得分:-3)

命令是路由事件。