在UWP c#中使用鼠标输入按钮样式

本文关键字:鼠标 输入 按钮 样式 UWP | 更新日期: 2023-09-27 18:05:43

我是UWP c#编程的初学者。我有一个菜单,上面有一些按钮我想改变它们的样式。我更改默认样式。但是我不能更改onMouseEnter的样式。我在谷歌上找到了这样的代码:

<Style x:Key="ButtonStyle" TargetType="Button">
        <Setter Property="BorderBrush" Value="Orange" />
        <Style.Triggers>
            <Trigger Property="IsMouseOver" Value="True">
                <Setter Property="Background" Value="Red"/>
            </Trigger>
        </Style.Triggers>
    </Style>

Style.Triggers似乎不支持UWP。你能帮我一下吗?

在UWP c#中使用鼠标输入按钮样式

但它似乎风格。UWP中不支持触发器。

是的,你是对的。在UWP中,我们需要使用内置的VisualStateManager。

我不知道你是如何实现你的菜单,但如果你想改变Button的背景,当它得到鼠标悬停,按下或其他一些状态,你可以修改默认的模板样式的按钮。像这样修改命名为PointerOverVisualState:

<VisualState x:Name="PointerOver">
    <Storyboard>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Background" Storyboard.TargetName="RootGrid">
            <DiscreteObjectKeyFrame KeyTime="0" Value="Red" />
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="BorderBrush" Storyboard.TargetName="ContentPresenter">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonBorderBrushPointerOver}" />
        </ObjectAnimationUsingKeyFrames>
        <ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Foreground" Storyboard.TargetName="ContentPresenter">
            <DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource ButtonForegroundPointerOver}" />
        </ObjectAnimationUsingKeyFrames>
        <PointerUpThemeAnimation Storyboard.TargetName="RootGrid" />
    </Storyboard>
</VisualState>
然后你可以使用StaticResource和这个样式的键来应用这个模板,例如:
<Button Content="Button 1" Style="{StaticResource ButtonStyle}" />