如何更改 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="" />
编辑 添加另一个答案:
默认情况下 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,所以按钮会自动改变。
所以我正在尝试更改项目中的默认字体系列和字体大小。我决定从按钮开始。
我这样做(我要为我的风格创建一个单独的文件,但现在我只想让它以某种方式工作):
<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="" />
编辑 添加另一个答案:
默认情况下 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,所以按钮会自动改变。