시스템 리소스를 사용하는 방법(WPF .NET)

이 예제에서는 시스템 정의 리소스를 사용하는 방법을 보여줍니다. 시스템 리소스는 WPF에서 제공하며 글꼴, 색상 및 아이콘과 같은 운영 체제 리소스에 대한 액세스를 허용합니다. 시스템 리소스는 여러 시스템 정의 값을 리소스 및 속성으로 노출하여 Windows와 일치하는 시각적 개체를 만들 수 있도록 합니다.

중요

.NET 7 및 .NET 6에 관한 데스크톱 가이드 설명서는 제작 중입니다.

Fonts

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의 동적 글꼴

시스템 글꼴 메트릭은 정적 리소스나 동적 리소스로 사용될 수 있습니다. 애플리케이션이 실행되는 동안 글꼴 메트릭을 자동으로 업데이트하려면 동적 리소스를 사용하고 자동으로 업데이트하지 않으려면 정적 리소스를 사용합니다.

참고

동적 리소스의 경우 속성 이름에 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의 동적 매개 변수

시스템 매개 변수 메트릭은 정적 리소스나 동적 리소스로 사용될 수 있습니다. 애플리케이션이 실행되는 동안 매개 변수 메트릭을 자동으로 업데이트하려면 동적 리소스를 사용하고 자동으로 업데이트하지 않으려면 정적 리소스를 사용합니다.

참고

동적 리소스의 경우 속성 이름에 Key라는 키워드가 추가됩니다.

다음 예제에서는 시스템 매개 변수 동적 리소스에 액세스한 후 사용하여 단추에 스타일을 지정하거나 단추를 사용자 지정하는 방법을 보여 줍니다. 이 XAML 예제에서는 단추의 너비와 높이에 SystemParameters 값을 할당하여 단추의 크기를 조정합니다.

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

참고 항목