在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中不支持触发器。
是的,你是对的。在UWP中,我们需要使用内置的VisualStateManager。
我不知道你是如何实现你的菜单,但如果你想改变Button
的背景,当它得到鼠标悬停,按下或其他一些状态,你可以修改默认的模板样式的按钮。像这样修改命名为PointerOver
的VisualState
:
<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}" />