How to set the default font for a WPF application?
Solution 1:
Assuming your Window
subclasses don't override DefaultStyleKey
, you can simply add it to your Window style, since TextElement.FontFamilyProperty
is an inherited property:
<Style TargetType="{x:Type Window}">
<Setter Property="FontFamily" Value="Segoe UI" />
</Style>
You also need to add the following to your App constructor after the InitializeComponent
call:
FrameworkElement.StyleProperty.OverrideMetadata(typeof(Window), new FrameworkPropertyMetadata
{
DefaultValue = FindResource(typeof(Window))
});
How it works: After the App object finishes initializing, the Window style specified therein is made the default style for all windows.
Solution 2:
Most of proposed solutions didn't work for me. My simple solution:
Add this to App.xaml:
<Style TargetType="{x:Type Window}">
<Setter Property="FontSize"
Value="14" />
</Style>
Add this in your MainWindow constructor (after InitializeComponent):
Style = (Style)FindResource(typeof(Window));
Solution 3:
One simple way to do it programmatically:
public MainWindow()
{
this.FontFamily = new FontFamily("Segoe UI");
}
Solution 4:
Actually you can get a full XAML solution combining some of the other answers here.
If your main window is called WinMain
(the one you load before all others), just add a reference to a style named e.g. WinAll
<Window x:Class="MyNamespace.WinMain"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
Title="WinMain" Height="450" Width="800"
Style="{StaticResource WinAll}">
and then define your style this way
<Style x:Key="WinAll" TargetType="{x:Type Window}">
<Setter Property="FontFamily"
Value="Comic Sans MS" />
<Setter Property="FontSize"
Value="14" />
</Style>