如果您创建一个简单的按钮,然后选择“编辑模板”->“编辑副本”,Blend 将自动生成一个样式区域以及所有按钮状态(MouseEnter、MouseLeave、Pressed 等)。生成的代码中没有任何地方表明在“MouseOver”事件上将状态更改为“MouseOver”,但它仍然可以正常工作!
标准按钮是如何做到这一点的?是否有某种 AutoEventWireUp 正在发生?
最佳答案
控件本身定义了它们所遵循的状态。不幸的是,没有神奇的自动连接正在进行。 Button 包含确定鼠标何时位于其上方的代码,在这种情况下,将其视觉状态设置为 MouseOver。 TemplateVisualStateAttribute 使 Blend 知道此控件上存在某个有效状态,但控件本身中的代码实际上决定了它所处的状态。
如果您正在开发自己的控件,这会给您带来定义控件支持哪些状态以及正确确定您所处状态的负担。
仅供引用:大多数内置控件在 MSDN 文档中都有其支持的状态列表。例如,Button for Silverlight 3 is here .
关于silverlight - 在 Silverlight 中自动更改 VisualState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2494898/