방법: 애플리케이션 범위 리소스 사전 사용

이 예제에서는 애플리케이션 범위 사용자 지정 리소스 사전을 정의하고 사용하는 방법을 보여 줍니다.

예제

Application은 공유되는 리소스 Resources에 대한 애플리케이션 범위 저장소를 노출합니다. 기본적으로 Resources 속성은 ResourceDictionary 형식의 인스턴스를 사용하여 초기화됩니다. Resources를 사용하여 애플리케이션 범위 속성을 가져오고 설정할 때 이 인스턴스를 사용합니다. 자세한 내용은 방법: 애플리케이션 범위 리소스 가져오기 및 설정을 참조하세요.

Resources를 사용하여 설정한 리소스가 여러 개인 경우 대신 사용자 지정 리소스 사전을 사용하여 해당 리소스를 저장하고 대신 Resources를 설정할 수 있습니다. 다음은 XAML을 사용하여 사용자 지정 리소스 사전을 선언하는 방법을 보여 줍니다.

<ResourceDictionary 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" >
    <SolidColorBrush x:Key="StandardSolidColorBrush" Color="Blue" />
    <LinearGradientBrush x:Key="StandardLinearGradientBrush" StartPoint="0.0,0.0" EndPoint="1.0,1.0">
        <LinearGradientBrush.GradientStops>
            <GradientStop Color="White" Offset="0" />
            <GradientStop Color="Black" Offset="1" />
        </LinearGradientBrush.GradientStops>
    </LinearGradientBrush>
</ResourceDictionary>

Resources를 사용하여 전체 리소스 사전을 스와핑하면 애플리케이션 범위 테마를 지원할 수 있습니다. 이 경우 각 테마는 단일 리소스 사전에 의해 캡슐화됩니다. 다음 예제에서는 ResourceDictionary를 설정하는 방법을 보여 줍니다.

<!--Set the Application ResourceDictionary-->
<Application.Resources>
    <ResourceDictionary Source="MyResourceDictionary.xaml" />
</Application.Resources>

다음은 XAML의 Resources에 의해 노출된 리소스 사전에서 애플리케이션 범위 리소스를 가져오는 방법을 보여 줍니다.

<!--Set the brush as a StaticResource from the ResourceDictionary-->
<Rectangle Name="Rect" Height="200" Width="100" Fill="{StaticResource ResourceKey=StandardSolidColorBrush}" />

다음 예제에서는 코드에서 리소스를 가져오는 방법을 보여 줍니다.

//Get a resource from the ResourceDictionary in code
Brush gradientBrush = (Brush)Application.Current.FindResource("StandardLinearGradientBrush");
'Get a resource from the ResourceDictionary in code
Dim GradientBrush As Brush = Application.Current.FindResource("StandardLinearGradientBrush")

Resources를 사용할 때 고려해야 할 두 가지 사항이 있습니다. 먼저 사전 는 개체이므로 속성 값을 설정하고 가져올 경우 정확히 같은 개체 인스턴스를 사용해야 합니다. (문자열을 사용할 때 키는 대/소문자를 구분합니다.) 두 번째로 사전 은 개체이므로 속성 값을 가져올 경우 해당 값을 원하는 형식으로 변환해야 합니다.

일부 리소스 종류는 형식에 의해 정의된 속성을 명시적 키(예: StyleDataTemplate 형식)로 자동으로 사용할 수 있습니다. 이렇게 하면 x:Key 값을 재정의할 수 있습니다. x:Key 키가 적용되도록 하려면 명시적 키 속성 앞에 선언합니다. 자세한 내용은 스타일, DataTemplates 및 암시적 키를 참조하세요.

참고 항목