방법: 애플리케이션 리소스 사용(WPF .NET)

이 예제에서는 애플리케이션 정의 리소스를 사용하는 방법을 보여 줍니다. 리소스는 일반적으로 프로젝트에서 사용하는 App.xaml 또는 Application.xaml 파일을 통해 애플리케이션 수준에서 정의할 수 있습니다. 애플리케이션에서 정의한 리소스는 전역적으로 범위가 지정되고 애플리케이션의 모든 부분에서 액세스할 수 있습니다.

중요

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

예제

다음 예제에서는 애플리케이션 정의 파일을 보여 줍니다. 애플리케이션 정의 파일은 리소스 섹션(Resources 속성 값)을 정의합니다. 애플리케이션 수준에 정의된 리소스는 애플리케이션의 일부인 다른 모든 페이지에 액세스할 수 있습니다. 이 경우 리소스는 선언된 스타일입니다. 컨트롤 템플릿을 포함하는 전체 스타일의 길이가 길 수 있으므로 이 예제는 스타일의 ContentTemplate 속성 setter 내에 정의된 컨트롤 템플릿을 생략합니다.

<Application.Resources>
    <Style TargetType="Border" x:Key="FancyBorder">
        <Setter Property="Background" Value="#4E1A3D" />
        <Setter Property="BorderThickness" Value="5" />
        <Setter Property="BorderBrush">
            <Setter.Value>
                <LinearGradientBrush>
                    <GradientStop Offset="0.0" Color="#4E1A3D"/>
                    <GradientStop Offset="1.0" Color="Salmon"/>
                </LinearGradientBrush>
            </Setter.Value>
        </Setter>
    </Style>
</Application.Resources>

다음 예제에서는 이전 예제의 애플리케이션 수준 리소스를 참조하는 XAML 페이지를 보여 줍니다. 리소스는 해당 리소스에 대해 고유한 리소스 키를 지정하는 StaticResource 태그 확장으로 참조됩니다. 리소스 "FancyBorder"는 현재 개체 및 창의 범위에서 찾을 수 없으므로 리소스 조회는 현재 페이지를 넘어 애플리케이션 수준 리소스로 계속됩니다.

<Border Style="{StaticResource FancyBorder}">
    <StackPanel Margin="5">
        <Button>Button 1</Button>
        <Button>Button 2</Button>
        <Button>Button 3</Button>
        <Button>Button 4</Button>
    </StackPanel>
</Border>

참고 항목