我在WinUI3应用程序中创建了一个自定义按钮组件。下面给出了相同的代码。
<Button
HorizontalAlignment="Center"
VerticalAlignment="Center"
Background="Transparent"
BorderThickness="0"
Width="{x:Bind Width}"
Height="{x:Bind Height}">
<StackPanel
Orientation="Vertical"
VerticalAlignment="Center"
HorizontalAlignment="Center">
<FontIcon
VerticalAlignment="Center"
FontFamily="{StaticResource SymbolThemeFontFamily}"
Glyph="{x:Bind Glyph}"
FontSize="{x:Bind IconSize}" />
<TextBlock
VerticalAlignment="Center"
HorizontalAlignment="Center"
Margin="0,10,0,0"
Text="{x:Bind Label}"
FontSize="{x:Bind FontSize}" />
</StackPanel>
</Button>
默认情况下,它给出了一个非常浅的灰色背景,在页面的白色背景中几乎看不到。因此,我想改变的背景颜色的按钮时,光标悬停在它,或当按钮是在重点通过标签。Current Button on hover
我如何才能做到这一点?
我尝试了<ControlTemplate>
,<VisualStateManager.VisualStateGroups>
<VisualState x:Name="PointerOver">
和<Storybaord>
,但无法使其工作。
我希望它有我选择的颜色,这样它就更突出了。就像在默认的<AppBarButton>
Default WinUI3 AppBarButton on hover中一样
1条答案
按热度按时间xjreopfe1#
在DefaultButtonStyle(generic.xaml)中可以看到,VisualStatePointerOver将Button的
Background
更改为名为ButtonBackgroundPointerOver的ThemeResource。(如果您不知道如何找到generic.xaml,请检查answer。
您可以像这样覆盖ButtonBackgroundPointerOver:
不幸的是,Button控件没有用于聚焦事件的VisualState。你可以做的是在代码隐藏中使用
GotFocus
和LostFocus
事件来更改Button的Background
,但你也可以创建一个自定义控件:AwesomeButton.cs
然后像这样使用它: