所以这是我的 XAML,由于某种原因它在鼠标悬停时不会改变颜色,我为其添加了触发器,我认为这样就可以了,当我将鼠标悬停在按钮上时它根本不执行任何操作,为什么呢?
<Button Click="ButtonBase_OnClick" Margin="10,0,0,0" Style="{DynamicResource RoundedButtonStyle}" Width="100" Height="30" HorizontalAlignment="Left">
<Grid>
<Image IsHitTestVisible="False" Height="15" Width="15" VerticalAlignment="Center" HorizontalAlignment="Left" Source="Resources/addButton.png" />
<TextBlock IsHitTestVisible="False" Margin="20,0,0,1" VerticalAlignment="Center" Foreground="#9e9e9e">Add Product</TextBlock>
</Grid>
</Button>
<Window.Resources>
<Style x:Key="RoundedButtonStyle" TargetType="{x:Type Button}">
<Setter Property="Template">
<Setter.Value>
<ControlTemplate TargetType="Button">
<Border CornerRadius="5" Background="#2d2d30" BorderThickness="1" Padding="2">
<ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
</Border>
</ControlTemplate>
</Setter.Value>
</Setter>
<Style.Triggers>
<Trigger Property="IsMouseOver" Value="True">
<Setter Property="Background" Value="Red"/>
</Trigger>
</Style.Triggers>
</Style>
</Window.Resources>
最佳答案
它没有改变,因为您将 Button
的控件模板修改为:
<Border CornerRadius="5" Background="#2d2d30" BorderThickness="1" Padding="2"
注意硬编码的背景颜色。无论您对按钮的 Background
属性执行什么操作,它都不会生效,因为它未被使用。如果您想在模板中使用该属性,您需要一个 TemplateBinding
:
Background="{TemplateBinding Background}"
然后在样式中将默认值设置为您的原始值。
<Setter Property="Background" Value="#2d2d30"/>
关于c# - 为什么我的按钮在 MouseOver 上没有改变颜色?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51487572/