Expression Blend VSM与事件驱动

5

我最近使用了Expression Blend,发现它有一种叫做“视觉状态管理器”的东西,它和常规的事件驱动模型有什么区别?哪个更好?

3个回答

1

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

  • 我被点击了吗?
  • 我的计时器触发了吗?
  • 我的数据准备好了吗?

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

  • 我被按下了吗?
  • 鼠标是否悬停在我上面?
  • 我被选中了吗?

事件只是回调到监听对象,而状态是可视状态,因此它们基本上用于完全不同的目的。事件可以触发状态变化,但这是唯一的重叠点。


0

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

一个模型并不比另一个更好:它们只是不同。在视图模型和模型/服务层中使用事件,在视图层中使用可视状态。


0

Visual State Manager(视觉状态管理器)用于管理状态(出人意料的)。例如,您的按钮可以处于多个状态:

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

您的代码实际上不需要知道它,因此应将应用程序的所有可视状态保留在XAML中。

此外,视觉状态管理器有助于减少您的代码后台,从而减少错误。

至于事件,事实上,我现在更倾向于更频繁地使用命令,我发现它们比单独的事件更有用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接