다음을 통해 공유


Application.Resources 속성

정의

스타일 및 브러시와 같은 애플리케이션 범위 리소스의 컬렉션을 가져오거나 설정합니다.

public:
 property System::Windows::ResourceDictionary ^ Resources { System::Windows::ResourceDictionary ^ get(); void set(System::Windows::ResourceDictionary ^ value); };
public System.Windows.ResourceDictionary Resources { get; set; }
[System.Windows.Markup.Ambient]
public System.Windows.ResourceDictionary Resources { get; set; }
member this.Resources : System.Windows.ResourceDictionary with get, set
[<System.Windows.Markup.Ambient>]
member this.Resources : System.Windows.ResourceDictionary with get, set
Public Property Resources As ResourceDictionary

속성 값

ResourceDictionary 0개 이상의 애플리케이션 범위 리소스를 포함하는 개체입니다.

특성

예제

이 예제에서는 애플리케이션 범위 리소스와 함께 XAML을 사용하여 일관된 시각적 모양을 만드는 방법을 보여 줍니다. 첫 번째 예제는 App.xaml; 두 번째는 MainWindow.xaml에서 가져옵니다.

<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    StartupUri="MainWindow.xaml"
    >

  <Application.Resources>
    <SolidColorBrush x:Key="BackgroundColor" Color="Yellow"></SolidColorBrush>
  </Application.Resources>

</Application>
<Window
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    Title="ApplicationResourcesSnippetSample_XAML" 
    Height="300" 
    Width="300" 
    Background="{StaticResource BackgroundColor}"
    >
  <Grid>
    <!-- Additional XAML. -->
  </Grid>
</Window>

다음 예제에서는 코드 및 XAML(C# WPF 프로젝트의 App.xaml 파일 또는 Visual Basic WPF 프로젝트의 Application.xaml 파일)에서 애플리케이션 리소스를 설정하는 방법을 보여 줍니다.

// Set an application-scope resource
Application.Current.Resources["ApplicationScopeResource"] = Brushes.White;
' Set an application-scope resource
Application.Current.Resources("ApplicationScopeResource") = Brushes.White
<Application
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    x:Class="SDKSample.App"
    StartupUri="MainWindow.xaml" 
    Startup="App_Startup" 
    Exit="App_Exit">
    <Application.Resources>
        <SolidColorBrush x:Key="ApplicationScopeResource" Color="White"></SolidColorBrush>
    </Application.Resources>
</Application>

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

// Get an application-scope resource
Brush whiteBrush = (Brush)Application.Current.Resources["ApplicationScopeResource"];
' Get an application-scope resource
Dim whiteBrush As Brush = CType(Application.Current.Resources("ApplicationScopeResource"), Brush)

설명

Resources 속성을 사용하여 애플리케이션의 창과 요소 간에 리소스를 공유할 수 있습니다. Resources 또한 속성은 다음 순서로 트래버스되는 리소스 조회 경로에 포함됩니다.

  1. 요소들

  2. 윈도우즈

  3. Application.Resources

  4. 시스템

따라서 UI(사용자 인터페이스) 요소는 애플리케이션 범위 리소스에 바인딩할 수 있습니다. 또한 리소스가 변경되면 리소스 시스템은 해당 리소스에 바인딩된 요소 속성이 변경 사항을 반영하도록 자동으로 업데이트되도록 합니다.

애플리케이션 범위 리소스는 애플리케이션 전체에서 일관된 테마를 지원하는 간단한 방법을 제공합니다. 태그를 사용하여 Application.Resources XAML에서 테마를 쉽게 만들 수 있습니다. 그러나 애플리케이션이 많은 수의 테마 요소를 포함할 수 있는 여러 테마를 지원하는 경우 각 테마에 대해 하나의 ResourceDictionary 인스턴스를 사용하여 쉽게 관리할 수 있습니다. 이러한 방식으로 Resources 속성을 적절한 ResourceDictionary테마로 설정하여 새 테마를 적용할 수 있습니다.

를 사용할 Resources때는 두 가지 사항을 고려해야 합니다. 첫째, 사전 는 개체이므로 속성 값을 설정하고 가져오는 경우 정확히 동일한 개체 인스턴스를 사용해야 합니다(문자열을 사용할 때 키는 대/소문자를 구분합니다). 둘째, 사전 값은 개체이므로 속성 값을 얻을 때 값을 원하는 형식으로 변환해야 합니다.

Resources 는 스레드로부터 안전하며 모든 스레드에서 사용할 수 있습니다.

적용 대상