WPFアプリケーションのフォントファミリを定義できるようにしたい。できれば、App.xaml
から参照されるテーマとしてリソースディクショナリを使用してください。次のようにStyle
を作成してみました。
<Style TargetType="{x:Type Control}">
<Setter Property="FontFamily" Value="Segoe UI" />
</Style>
しかし、これは機能しません。タイプをTextBlock
に設定すると、ほとんどのコントロールで機能しますが、これが適用されないコントロールがいくつかあります。
ウィンドウにフォントを設定し、そのウィンドウのすべての子コントロールにフォントを継承させることができます。しかし、ダイアログウィンドウはデフォルトのフォントに戻ると思いますが、これはまさに私が望むものではありません。
何か案は?
Window
サブクラスがDefaultStyleKey
をオーバーライドしないと仮定すると、TextElement.FontFamilyProperty
は継承されたプロパティです。
<Style TargetType="{x:Type Window}">
<Setter Property="FontFamily" Value="Segoe UI" />
</Style>
InitializeComponent
呼び出しの後に、Appコンストラクターに次を追加する必要もあります。
FrameworkElement.StyleProperty.OverrideMetadata(typeof(Window), new FrameworkPropertyMetadata
{
DefaultValue = FindResource(typeof(Window))
});
仕組み:Appオブジェクトの初期化が完了すると、そこに指定されたウィンドウスタイルがすべてのウィンドウのデフォルトスタイルになります。
提案されたソリューションのほとんどは私にとってはうまくいきませんでした。私の簡単な解決策:
これをApp.xamlに追加します。
<Style TargetType="{x:Type Window}">
<Setter Property="FontSize"
Value="14" />
</Style>
これをMainWindowコンストラクターに追加します(InitializeComponentの後):
Style = (Style)FindResource(typeof(Window));
プログラムでそれを行う簡単な方法:
public MainWindow()
{
this.FontFamily = new FontFamily("Segoe UI");
}
私はこれを見つけました :
TextElement.FontFamilyProperty.OverrideMetadata(
typeof(TextElement),
new FrameworkPropertyMetadata(
new FontFamily("Comic Sans MS")));
TextBlock.FontFamilyProperty.OverrideMetadata(
typeof(TextBlock),
new FrameworkPropertyMetadata(
new FontFamily("Comic Sans MS")));
実際、ここで他の回答のいくつかを組み合わせた完全なXAMLソリューションを取得できます。
メインウィンドウの名前がWinMain
(他のすべてのウィンドウより先に読み込むウィンドウ)の場合、たとえば、スタイルという名前の参照を追加します。 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}">
そして、あなたのスタイルをこのように定義します
<Style x:Key="WinAll" TargetType="{x:Type Window}">
<Setter Property="FontFamily"
Value="Comic Sans MS" />
<Setter Property="FontSize"
Value="14" />
</Style>