silverlight - 在 Silverlight 中自动更改 VisualState

标签 silverlight xaml visualstatemanager

如果您创建一个简单的按钮,然后选择“编辑模板”->“编辑副本”,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/

相关文章:

c# - 将 FrameworkElement.DataContext 设置为匿名对象

silverlight - 错误: unable to start debugging.尚未安装Silverlight开发人员运行时。请安装匹配版本

c# - 在 Silverlight 8.1 应用程序中注册后台任务

flash - 如果有例如 crossdomain.xml 和 clientaccesspolicy.xml 的意义是什么? PHP/ curl ?

c# - uwp 获取自定义媒体控件中视觉状态更改的通知

c# - MVVM 绑定(bind)在设计时不起作用

wpf - WPF 中的焦点数据模板

silverlight - 如何测量具有自动高度和宽度的 Canvas

c# - 如何用VisualStateManager代替DataTrigger实现动态绑定(bind)?

silverlight - 我可以更改 ItemTemplate 中 DataTemplate 的 VisualState 吗?