在Silverlight中自动更改VisualState

时间:2010-03-22 18:50:31

标签: silverlight xaml visualstatemanager

如果您创建一个简单的按钮,然后选择编辑模板 - >编辑副本,Blend将自动生成样式区域,以及所有按钮状态(MouseEnter,MouseLeave,Pressed等)。在生成的代码中没有任何地方说它在“MouseOver”事件上,将状态更改为“MouseOver”,但它仍然可以工作!

标准按钮是如何做到的?是否有某种AutoEventWireUp正在进行?

1 个答案:

答案 0 :(得分:4)

控件本身定义了他们所尊重的状态。不幸的是,没有神奇的自动接线。 Button包含确定鼠标何时在其上方的代码,在这种情况下,将其可视状态设置为MouseOver。 TemplateVisualStateAttribute是让Blend知道此控件上存在某种有效状态的东西,但控件本身的代码实际上决定了它所处的状态。

如果您正在开发自己的控件,这会给您定义控件支持哪些状态的负担,以及正确确定您所处的状态的工作。

仅供参考:大多数内置控件都有MSDN文档中支持状态的列表。例如,Button for Silverlight 3 is here