2

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

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

4

1 回答 1

4

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

如果您正在开发自己的控件,这将定义您的控件支持哪些状态以及正确确定您处于哪种状态的工作都交给了您。

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

于 2010-03-23T11:55:27.997 回答