アプリのフォントを一括設定

2025年3月2日日曜日

C# WPF

記事のカテゴリー: C#、.NET9、WPF

アプリのフォントを一括で設定する方法を考えます。

ウィンドウのフォントを設定するとウィンドウ上のコントロールに設定が伝播します。これを利用して、ApplicationのResourcesプロパティでWindowのスタイルを定義して、DynamicResourceを使ってFontFamilyプロパティを設定します。

XAML:

<Application.Resources>
    <!--  FontFamily 型のリソースを宣言する  -->
    <!--  (初期値は SystemFonts.MessageFontFamily)  -->
    <x:Static x:Key="ApplicationFontFamily" Member="SystemFonts.MessageFontFamily" />

    <!--  Window のスタイルで DynamicResource を使って FontFamily を設定する  -->
    <Style TargetType="Window">
        <Setter Property="FontFamily" Value="{DynamicResource ApplicationFontFamily}" />
    </Style>
</Application.Resources>

ApplicationのResourcesプロパティで定義したFontFamily型のリソースを置き換えることでアプリのフォントを変更できます。

C#:

// FontFamily 型のリソースを書き換える
Application.Current.Resources["ApplicationFontFamily"] = new FontFamily("Meiryo UI");