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

时间:2017-12-01 14:02:28

标签: c# wpf mahapps.metro

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

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

<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>

并没有任何变化。有什么问题?

我想这是因为程序无法找到&#34; {StaticResource MetroButton}&#34;。

的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>

2 个答案:

答案 0 :(得分:0)

除了定义一个样式只是为了设置fontfamily / weight,您可以直接在资源中定义fontfamily和weight with a key(一个带有我使用的字体的例子)

<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样式。如果你想修改一个样式,让你在所有视图中说按钮,你不需要根据

使用
<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按钮的模板并修改它

答案 1 :(得分:0)

因此,您只需在声明地铁参考后在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>

Button使用TextBox,因此按钮将自动更改。