Expression Blend VSM vs Event Driven

时间:2011-10-02 19:04:00

标签: expression-blend blend event-driven vsm

我最近使用了Expression Blend,我发现它有一个叫做Visual State Manager的东西,它与常规事件驱动模型有什么区别,哪个更好?

3 个答案:

答案 0 :(得分:1)

事件是针对发生“事情”的事例,例如:

  • 我点击了吗?
  • 我的计时器开火吗?
  • 我的数据准备好了吗?

可视状态管理器用于管理控件的多个同时状态

  • 我被按下了吗?
  • 鼠标悬在我身上?
  • 我查过了吗?

事件只是对侦听对象的回调,而状态是视觉状态,因此基本上用于完全不同的目的。事件可以触发状态更改,但这是唯一的重叠。

答案 1 :(得分:0)

对象触发事件以指示已发生某事。该事件携带任意有效负载(事件参数)加上(按惯例)发送事件的对象。视觉状态定义控件或用户控件的不同状态。视觉状态定义了控件的外观,它如何过渡到该外观,以及它如何从该外观过渡。 (“转换”可能涉及通过复杂动画切换可见性的任何内容。)视觉状态是控件的一部分,但您不能像事件一样直接订阅它们。

一种模式并不比另一种更好:它们完全不同。考虑在视图模型和模型/服务层中使用事件以及视图层中的可视状态。

答案 2 :(得分:0)

可视状态管理器用于管理状态(令人惊讶)。例如,您的按钮可以是多个状态:

  • 鼠标悬停
  • 鼠标按下
  • 禁用
  • 启用

您的代码并不需要了解它,因此应用程序的所有可视状态都应保留在XAML中。

此外,可视状态管理器有助于减少更容易出错的代码。

至于事件,事实上我现在更倾向于使用命令,我发现它们比事件本身更有用。