使用 VisualStateManager 更改按钮样式
Posted
技术标签:
【中文标题】使用 VisualStateManager 更改按钮样式【英文标题】:Change button style with VisualStateManager 【发布时间】:2015-11-03 07:39:42 【问题描述】:我正在开发通用 Windows 应用程序。
我想在不同状态下更改按钮的样式,但我不知道(我是新手)
这是我的视觉状态组
<VisualStateGroup x:Name="StartStopTimer">
<VisualState x:Name="Start">
</VisualState>
<VisualState x:Name="Stop">
<VisualState.Setters>
</VisualState.Setters>
</VisualState>
</VisualStateGroup>
我有两种样式设置,称为 StartButtonStyle
和 StopButtonStyle
。
所以我想在Stop
视觉状态下将按钮样式更改为StopButonStyle
,在Start
视觉状态下将StartButtonStyle
。
我该怎么做?我尝试在 Expression Blend 中使用记录,但它对我的视觉状态没有任何作用。
【问题讨论】:
【参考方案1】:你在这里:
<VisualStateManager.VisualStateGroups>
<VisualStateGroup x:Name="StartStopTimer">
<VisualState x:Name="Start">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="TestButton"
Storyboard.TargetProperty="Style">
<DiscreteObjectKeyFrame KeyTime="0" Value="StaticResource StartButtonStyle">
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
<VisualState x:Name="Stop">
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetName="TestButton"
Storyboard.TargetProperty="Style">
<DiscreteObjectKeyFrame KeyTime="0"
Value="StaticResource StopButtonStyle">
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</VisualState>
</VisualStateGroup>
</VisualStateManager.VisualStateGroups>
当然,您需要在资源中定义您的样式,例如在页面资源中。
请不要忘记将我的回复标记为答案。
【讨论】:
以上是关于使用 VisualStateManager 更改按钮样式的主要内容,如果未能解决你的问题,请参考以下文章
将 [VisualStateManager] 视图状态绑定到 MVVM 视图模型?
VisualStateManager.SetVisualStateGroups UWP
控件 UI: VisualState, VisualStateManager, 控件的默认 UI
如何刷新 VisualStateManager 的 'Focused' VisualState 的样式效果?