使用 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>

我有两种样式设置,称为 StartButtonStyleStopButtonStyle

所以我想在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 的样式效果?

WPF: WPF 中的 Triggers 和 VisualStateManager

VisualStateManager