WPFで明示的にシステムフォントを指定する方法

WPFでは,特にフォントファミリーを指定しない限りシステムフォント(OSのデフォルトフォント)が使われる。

フォントファミリーに対して特にこだわりが無い場合はあえてフォントファミリーを指定する必要も無いけど,ユーザーが複数のフォントファミリーを切り替えて使えるようにする場合などで,システムフォントを使いたいなというときにはそれを明示的に指定する必要がある。

ただし,そのためにはコントロールのFontFamilyプロパティに null や引数無しで new FontFamily() を指定するのではなく,SystemFontsクラスを使う必要がある。

システムフォントの設定は,ダイアログの本文に使うもの,キャプションに使うもの,ステータスバーに使うものなどで個別に設定されているため,どのフォントファミリーを使うのかを決めておく必要がある。

本文に使われているフォント(Windows 10の日本語ならYu Gothic UI)がよい場合は,SystemFontsクラスのstaticプロパティであるMessageFontFamilyプロパティからFontFamilyのインスタンスが取得できる。

XAMLで指定する場合

コード例:

<Button x:Name="_button" FontFamily="{x:Static SystemFonts.MessageFontFamily}">ボタン</Button>

C#で指定する場合

コード例:

// 略

using System.Windows;

// 略

Button button = _button;
button.FontFamily = SystemFonts.MessageFontFamily;

コメントする