如何更改 mahapps 项目中的字体大小?

How to change the font size in a mahapps project?

所以我正在尝试更改项目中的默认字体系列和字体大小。我决定从按钮开始。

我这样做(我要为我的风格创建一个单独的文件,但现在我只想让它以某种方式工作):

<Controls:MetroWindow.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <ResourceDictionary Source="/Templates/MyTemplateSelector.xaml"/>
            <ResourceDictionary Source="/Templates/FullMenu.xaml"/>
        </ResourceDictionary.MergedDictionaries>

        <Style BasedOn="{StaticResource MetroButton}" TargetType="Button">
            <Setter Property="FontFamily" Value="Calibri" />
        </Style>

    </ResourceDictionary>
</Controls:MetroWindow.Resources>

没有任何变化。怎么了?

我猜是因为程序找不到“{StaticResource MetroButton}”。

App.xaml

<Application x:Class="WpfApp2.App"
         xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
         xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
         xmlns:local="clr-namespace:WpfApp2"
         xmlns:dialogYesNo="clr-namespace:WpfApp2.DialogYesNo"   
         StartupUri="Views/MainWindow.xaml">
<Application.Resources>
    <ResourceDictionary>
        <ResourceDictionary.MergedDictionaries>
            <!-- MahApps.Metro resource dictionaries. Make sure that all file names are Case Sensitive! -->
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Controls.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Fonts.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Colors.xaml" />
            <!-- Accent and AppTheme setting -->
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/Blue.xaml" />
            <ResourceDictionary Source="pack://application:,,,/MahApps.Metro;component/Styles/Accents/BaseLight.xaml" />
            <ResourceDictionary Source="ViewModels.xaml" />
            <ResourceDictionary Source="Dialogs.xaml" />
        </ResourceDictionary.MergedDictionaries>
    </ResourceDictionary>
</Application.Resources>

与其定义样式只是为了设置 fontfamily/weight,您可以直接在您的资源中使用键定义字体系列和粗细(我使用的字体示例)

<Controls:MetroWindow.Resources>
    <FontFamily x:Key="FontAwesome">/tuseradm;component/assets/fontawesome-webfont.ttf#FontAwesome</FontFamily>
</Controls:Flyout.Resources>

然后在您的按钮中设置字体系列

<Button FontFamily="{StaticResource FontAwesome}" Content="&#xf14a;" />

编辑 添加另一个答案:

默认情况下 mahapps 会覆盖默认的 wpf 样式。如果你想修改你所有视图中按钮的样式,你不需要使用 based on

<Style BasedOn="{StaticResource {x:Type Button}}" TargetType="Button">
        <Setter Property="FontFamily" Value="Calibri" />
        <Setter Property="FontWeight" Value="ExtraLight"/>
</Style>

编辑 2

至少对我来说,即使我在设计时使用第一次编辑中公开的方法看到了更改,但在 运行 时问题仍然存在。所以在我看来,坚持我的第一个答案要好得多。为每个按钮设置 fontfamily 和 fontweight 可能会很烦人,但这是处理 mahapps 样式最安全的方法。唯一能 100% 解决这个问题的方法就是找到(不知道在哪里)mahapps 按钮的模板并修改它

因此,您只需在 App.xaml 声明地铁引用后使用它:

       <Style TargetType="Label">
            <Setter Property="FontFamily" Value="Segoe UI Light"/>
        </Style>

        <Style TargetType="TextBlock">
            <Setter Property="FontFamily" Value="Segoe UI Light"/>
        </Style>
        <Style TargetType="TextBox">
            <Setter Property="FontFamily" Value="Segoe UI "/>
        </Style>

按钮使用TextBox,所以按钮会自动改变。