我最近使用了 Expression Blend,发现它有一个叫做 Visual State Manager 的东西,它和常规的事件驱动模型有什么区别,哪个更好?
问问题
128 次
3 回答
1
事件是针对“事情”发生的实例,例如:
- 我被点击了吗?
- 我的计时器开火了吗?
- 我的数据准备好了吗?
可视状态管理器用于管理控件的多个同时状态。
- 我有压力吗?
- 鼠标在我头上吗?
- 我被检查了吗?
事件只是对监听对象的回调,而状态是视觉状态,因此基本上用于完全不同的目的。事件可以触发状态更改,但这是唯一的重叠。
于 2011-10-03T13:44:12.807 回答
0
一个对象触发一个事件来表明某事已经发生。事件携带任意有效负载(事件参数)加上(按照惯例)发送事件的对象。视觉状态定义控件或用户控件的不同状态。视觉状态定义了控件的外观、它如何转换为该外观以及它如何从该外观转换。(“转换”可能涉及从切换可见性到复杂动画的任何事情。)视觉状态是控件的一部分,但您不能像使用事件那样直接订阅它们。
一种模型并不比另一种更好:它们只是不同。考虑在视图模型和模型/服务层中使用事件以及在视图层中使用视觉状态。
于 2011-10-04T04:05:41.590 回答
0
视觉状态管理器用于管理状态(令人惊讶)。因此,例如,您的按钮可以处于多个状态:
- 鼠标移到
- 鼠标向下
- 已禁用
- 启用
您的代码实际上并不需要了解它,因此应用程序的所有可视状态都应保存在 XAML 中。
视觉状态管理器还有助于减少更容易出错的代码。
至于事件,实际上我现在更倾向于使用命令,我发现它们比事件本身更有用。
于 2011-11-10T15:07:54.483 回答