システム リソースを使用する方法 (WPF .NET)

この例では、システム定義のリソースを使用する方法について説明します。 WPF に用意されているシステム リソースを使って、フォント、色、アイコンなどのオペレーティング システム リソースにアクセスできます。 システム リソースにより、いくつかのシステム定義値がリソースおよびプロパティの両方として公開され、Windows と一貫性のあるビジュアルを作成するのに利用できます。

重要

.NET 7 と .NET 6 用のデスクトップ ガイド ドキュメントは作成中です。

フォント

SystemFonts クラスを使用して、オペレーティング システムで使用されているフォントを参照します。 このクラスには、静的プロパティとしてのシステム フォント値と、実行時にこれらの値に動的にアクセスするために使用できるリソース キーを参照するプロパティが含まれます。 たとえば、CaptionFontFamilySystemFonts 値であり、CaptionFontFamilyKey は対応するリソース キーです。

次の例は、テキスト ブロックのスタイル設定またはカスタマイズを行うために、SystemFonts のプロパティにアクセスして静的な値として使用する方法を示しています。

<TextBlock FontSize="{x:Static SystemFonts.SmallCaptionFontSize}"
           FontWeight="{x:Static SystemFonts.SmallCaptionFontWeight}"
           FontFamily="{x:Static SystemFonts.SmallCaptionFontFamily}"
           Text="Small Caption Font">
</TextBlock>

コードで SystemFonts の値を使用するために、静的な値または動的リソース参照を使用する必要はありません。 代わりに、SystemFonts クラスの非キー プロパティを使用します。 非キー プロパティは、静的プロパティとして定義されているように見えますが、システムによってホストされている WPF の実行時の動作によって、プロパティがリアルタイムで再評価され、ユーザーによるシステム値の変更が正しく反映されます。 次の例では、ボタンのフォント設定を指定する方法を示します。

var myButton = new Button()
{
    Content = "SystemFonts",
    Background = SystemColors.ControlDarkDarkBrush,
    FontSize = SystemFonts.IconFontSize,
    FontWeight = SystemFonts.MessageFontWeight,
    FontFamily = SystemFonts.CaptionFontFamily
};

mainStackPanel.Children.Add(myButton);
Dim myButton = New Button() With
{
    .Content = "SystemFonts",
    .Background = SystemColors.ControlDarkDarkBrush,
    .FontSize = SystemFonts.IconFontSize,
    .FontWeight = SystemFonts.MessageFontWeight,
    .FontFamily = SystemFonts.CaptionFontFamily
}

mainStackPanel.Children.Add(myButton)

XAML 内の動的フォント

システム フォント メトリックは、静的なリソースとしても、動的なリソースとしても使用できます。 アプリケーションの実行時にフォント メトリックを自動的に更新する場合は、動的リソースを使用します。それ以外の場合は、静的リソースを使用します。

Note

動的リソースのプロパティ名には、キーワード Key が追加されています。

次の例では、テキスト ブロックのスタイル設定またはカスタマイズを行うために、システム フォントの動的リソースにアクセスして使用する方法を示します。

<TextBlock FontSize="{DynamicResource {x:Static SystemFonts.SmallCaptionFontSize}}"
           FontWeight="{DynamicResource {x:Static SystemFonts.SmallCaptionFontWeight}}"
           FontFamily="{DynamicResource {x:Static SystemFonts.SmallCaptionFontFamily}}"
           Text="Small Caption Font">
</TextBlock>

パラメーター

SystemParameters クラスを使用して、プライマリ ディスプレイのサイズなど、システムレベルのプロパティを参照します。 このクラスには、システム パラメーター値のプロパティと、値にバインドされるリソース キーの両方が含まれます。 たとえば、FullPrimaryScreenHeightSystemParameters プロパティ値であり、FullPrimaryScreenHeightKey は対応するリソース キーです。

次の例では、SystemParameters の静的な値にアクセスして使用して、ボタンのスタイル設定またはカスタマイズを行う方法を示します。 このマークアップの例では、ボタンに SystemParameters 値を適用して、ボタンのサイズを設定します。

<Button FontSize="8" 
        Height="{x:Static SystemParameters.CaptionHeight}"
        Width="{x:Static SystemParameters.IconGridWidth}"
        Content="System Parameters">
</Button>

コードで SystemParameters の値を使用するために、静的参照または動的リソース参照を使用する必要はありません。 代わりに、SystemParameters クラスの値を使用します。 非キー プロパティは、静的プロパティとして定義されているように見えますが、システムによってホストされている WPF の実行時の動作によって、プロパティがリアルタイムで再評価され、ユーザーによるシステム値の変更が正しく反映されます。 次の例では、SystemParameters 値を使用して、ボタンの幅と高さを設定する方法を示します。

var myButton = new Button()
{
    Content = "SystemParameters",
    FontSize = 8,
    Background = SystemColors.ControlDarkDarkBrush,
    Height = SystemParameters.CaptionHeight,
    Width = SystemParameters.CaptionWidth,
};

mainStackPanel.Children.Add(myButton);
Dim myButton = New Button() With
{
    .Content = "SystemParameters",
    .FontSize = 8,
    .Background = SystemColors.ControlDarkDarkBrush,
    .Height = SystemParameters.CaptionHeight,
    .Width = SystemParameters.CaptionWidth
}

mainStackPanel.Children.Add(myButton)

XAML 内の動的パラメーター

システム パラメーター メトリックは、静的なリソースとしても、動的なリソースとしても使用できます。 アプリケーションの実行時にパラメーター メトリックを自動的に更新する場合は、動的リソースを使用します。それ以外の場合は、静的リソースを使用します。

Note

動的リソースのプロパティ名には、キーワード Key が追加されています。

次の例では、ボタンのスタイル設定やカスタマイズを行うために、システム パラメーター動的リソースにアクセスして使用する方法を示します。 この XAML の例では、ボタンの幅と高さに SystemParameters の値を割り当てて、ボタンのサイズを設定します。

<Button FontSize="8" 
        Height="{DynamicResource {x:Static SystemParameters.CaptionHeightKey}}"
        Width="{DynamicResource {x:Static SystemParameters.IconGridWidthKey}}"
        Content="System Parameters">
</Button>

関連項目