如何使鼠标悬停时按钮的背景改变
本文关键字:背景 改变 按钮 何使 鼠标 悬停 | 更新日期: 2023-09-27 18:19:13
在下面的代码中,我想使一个蓝色的图像背景按钮变为绿色的图像按钮,鼠标在上面。
我的XAML代码如下,但鼠标在按钮上没有发生任何事情。NextButton.png
是原来的按钮,nextGreen.png
应该是鼠标在上面的背景。
问题在哪里?
<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}"
Content=""
HorizontalAlignment="Right"
Margin="0,0,0.2,0"
VerticalAlignment="Bottom"
Width="50"
Height="100"
Grid.Column="1"
Click="Next_Click">
<Button.Background>
<ImageBrush ImageSource="NextButton.png" />
</Button.Background>
<Button.Template>
<ControlTemplate>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver"
Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="nextGreen.png" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
<StackPanel>
<StackPanel.Background>
<ImageBrush ImageSource="Nextbutton.png"/>
</StackPanel.Background>
</StackPanel>
</ControlTemplate>
</Button.Template>
</Button>
您设置了按钮的背景,但随后您覆盖了Template
,因此Button.Background
永远不会显示。你应该去掉Button.Background
,然后在Template
中命名StackPanel
,这样你就可以改变Trigger
的背景了。
<Button Style="{StaticResource {x:Static ToolBar.ButtonStyleKey}}" Content="" HorizontalAlignment="Right" Margin="0,0,0.2,0" VerticalAlignment="Bottom" Width="50" Height="100" Grid.Column="1" Click="Next_Click">
<Button.Template>
<ControlTemplate>
<ControlTemplate.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" TargetName="root">
<Setter.Value>
<ImageBrush ImageSource="nextGreen.png" />
</Setter.Value>
</Setter>
</Trigger>
</ControlTemplate.Triggers>
<StackPanel x:Name="root">
<StackPanel.Background>
<ImageBrush ImageSource="Nextbutton.png"/>
</StackPanel.Background>
</StackPanel>
</ControlTemplate>
</Button.Template>
</Button>