我认为最简单的方法是创建一个可以在鼠标悬停时用作按钮背景的图像,如下所示:
<Style x:Key="SwitchButtonStyle" TargetType="Button">
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background">
<Setter.Value>
<ImageBrush ImageSource="yourimagepath.ending"></ImageBrush>
</Setter.Value>
</Setter>
<Setter Property="HorizontalContentAlignment" Value="Right"/>
</Trigger>
</Style.Triggers>
</Style>
编辑:定位内容的更灵活方法如下:
将 TextBlock 作为按钮内容:
<Button.Content>
<TextBlock Text="YourTextOrBinding" Style="{DynamicResource ResourceKey=TextBlockOnButtonStyle}"></TextBlock>
</Button.Content>
TextBlockOnButtonStyle:
<Style x:Key="TextBlockOnButtonStyle" TargetType="TextBlock">
<Style.Triggers>
<DataTrigger Binding="{Binding RelativeSource={RelativeSource AncestorType={x:Type Button}}, Path=IsMouseOver}" Value="True">
<Setter Property="Margin" Value="10,0,0,0"></Setter>
</DataTrigger>
</Style.Triggers>
</Style>
setters 值中的 10 是当鼠标悬停在按钮上时文本向右移动的像素数。
编辑2:如果你想使用一个矩形而不是整个图像作为按钮背景,你可以这样做:
<DockPanel Width="100" Height="30">
<Rectangle Visibility="{Binding ElementName=btnMain, Path=IsMouseOver, Converter={StaticResource ResourceKey=BoolToVis}}" Width="25">
<Rectangle.Fill>
<whateveryouwanttousetofilltheimage>
</Rectangle.Fill>
</Rectangle>
<Button Name="btnMain" Content="YourContentOrBinding"/>
</DockPanel>
在这里,我将矩形的 Visibility 绑定到按钮 IsMouseOver-property 并使用 BooleanToVisibilityConverter 转换输出。