在鼠标悬停时更改按钮字体粗细和/或字体样式[关闭]

Posted

技术标签:

【中文标题】在鼠标悬停时更改按钮字体粗细和/或字体样式[关闭]【英文标题】:Change Button FontWeight and/or FontStyle on mouseover [closed] 【发布时间】:2021-12-20 21:40:55 【问题描述】:

我想创建一个在鼠标悬停时动态更改其样式的按钮。我想更改 Foreground、Background、Border、FontWeight 和/或 FontStyle。我的 Window.Resources 中有以下 XAML...

<Window.Resources>
    <Style TargetType="Button" x:Key="mouseOverStyle">
        <Setter Property="Foreground" Value="#FF808080" />
        <Setter Property="Background" Value="Transparent" />
        <Setter Property="TextBlock.FontWeight" Value="Normal" />
        <Setter Property="TextBlock.FontStyle" Value="Normal" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="Button" >
                    <Border x:Name="Border" Background="TemplateBinding Background"  BorderBrush="Transparent" BorderThickness="2" >
                        <ContentPresenter HorizontalAlignment="Center" VerticalAlignment="Center" />
                    </Border>
                    <ControlTemplate.Triggers >
                        <Trigger Property="IsMouseOver" Value="True">
                            <Setter Property="Foreground" Value="White" />
                            <Setter Property="Background" Value="#FF303030" />
                            <Setter Property="TextBlock.FontWeight" Value="Bold" />
                            <Setter Property="TextBlock.FontStyle" Value="Italic" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

</Window.Resources>

在 MouseOver 上,Background、Foreground 和 Border 属性正确更改。但是,FontWeight 和 FontStyle 不会改变。

请告诉我我缺少什么,或者我需要改变什么。谢谢。

【问题讨论】:

【参考方案1】:

鉴于您定义 Style 的方式,您需要明确告诉 Button 要使用哪种样式,如下所示:

<Button Style="StaticResource mouseOverStyle" />

您可以使用一些替代方案,它们会隐式告诉应用程序中的所有控件应用样式。让我们知道,答案可以扩展为包含此方法作为替代方法。

【讨论】:

以上是关于在鼠标悬停时更改按钮字体粗细和/或字体样式[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

更改导航栏后退按钮的粗细

Qt:更改字体粗细

将鼠标悬停在列表上时如何更改锚点颜色

为啥不在@font-face, Font Squirrel 中定义字体粗细或字体样式?

由于某种原因,向 TextInput 添加值会更改字体粗细

悬停时更改按钮内的字体图标颜色