c# - 为什么我的按钮在 MouseOver 上没有改变颜色?

标签 c# .net wpf xaml

所以这是我的 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/

相关文章:

c# - 图像未显示在 FlowDocument 中

c# - 有没有办法在运行时从控件中删除 Alt 字符快捷方式?

c# - 删除指定设计样本中的标签间距

c# - 升级到 5.0.0 后 TokenValidationParameters 不再起作用

c# - 使用 c#.net 创建相对文件夹

c# - 如何为 Windows 应用商店应用程序创建自定义按钮?

c# - 使用 C# 在 VisualBrush 中设置图像运行时

.net - 单独程序集中的 ResourceDictionary

c# - Visual Studio 2017 扩展,用于跨整个解决方案进行自定义 C# 重构

c# - 如何将此 PHP 脚本转换为 C#?