2010-03-22 62 views
2

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

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

+0

我不太确定我理解你的问题。你真的想要以这种方式改变一个按钮的状态吗? – AnthonyWJones 2010-03-22 21:39:18

回答

4

控件本身定义了它们所尊重的状态。不幸的是,没有神奇的自动布线正在进行。该按钮包含确定鼠标何时结束的代码,并且在这种情况下,将其视觉状态设置为MouseOver。 TemplateVisualStateAttribute让Blend知道在这个控件上有一个确定的有效状态,但是控件本身的代码实际上决定了它的状态。

如果你正在开发自己的控件,将负责定义您的控件支持您的哪些状态,以及正确确定您处于哪种状态的工作。

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