다음을 통해 공유


Application.RequestedTheme 속성

정의

앱의 전체 테마에 대한 밝은 어두운 기본 설정을 결정하는 값을 가져오거나 설정합니다.

public:
 property ApplicationTheme RequestedTheme { ApplicationTheme get(); void set(ApplicationTheme value); };
ApplicationTheme RequestedTheme();

void RequestedTheme(ApplicationTheme value);
public ApplicationTheme RequestedTheme { get; set; }
var applicationTheme = application.requestedTheme;
application.requestedTheme = applicationTheme;
Public Property RequestedTheme As ApplicationTheme
<Application RequestedTheme="applicationThemeMemberName" .../>

속성 값

열거형 값입니다. 초기 값은 Windows 설정에서 사용자가 설정한 기본 테마입니다.

예제

이 예제에서는 로컬 앱 설정에 요청된 테마를 저장한 다음, 앱을 다시 시작할 때 검색하여 적용하는 방법을 보여 주세요.

주의

이 간소화된 예제는 열거형 값과 일치하는 ApplicationTheme 라디오 단추 옵션의 순서에 따라 달라집니다. 0 = 밝게, 1 = 어둡게. 다른 순서로 배치하거나 라디오 단추 이외의 UI를 사용하려면 그에 따라 코드를 수정해야 합니다.

<RadioButtons Header="App theme"
              SelectionChanged="AppTheme_SelectionChanged"
              Loaded="RadioButtons_Loaded">
    <x:String>Light</x:String>
    <x:String>Dark</x:String>
    <x:String>Use system setting</x:String>
</RadioButtons>
private void AppTheme_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
    if (sender is RadioButtons rb)
    {
        // Save theme choice to LocalSettings. 
        // ApplicationTheme enum values: 0 = Light, 1 = Dark
        ApplicationData.Current.LocalSettings.Values["themeSetting"] = rb.SelectedIndex;
    }
}

private void RadioButtons_Loaded(object sender, RoutedEventArgs e)
{
    if (sender is RadioButtons rb)
    {
        // Set the RadioButtons selection to the saved value.
        rb.SelectedIndex = (int)ApplicationData.Current.LocalSettings.Values["themeSetting"];
    }
}

App.xaml.cs

public App()
{
    this.InitializeComponent();

    // Get theme choice from LocalSettings.
    object value = ApplicationData.Current.LocalSettings.Values["themeSetting"];

    if (value != null)
    {
        // Apply theme choice if saved value is Light or Dark.
        // Otherwise, don't set it and the Windows Personalization setting is used. 
        if ((int)value == 0 || (int)value == 1)
        {
            App.Current.RequestedTheme = (ApplicationTheme)(int)value;
        }
    }
}

설명

기본 제공되는 두 가지 테마는 "밝게" 및 "어둡게"입니다. 기본적으로 앱은 Windows 설정에서 사용자가 설정한 테마를 사용하여 실행됩니다(설정 > 개인 설정 > 색 > 기본 앱 모드 선택). 앱의 속성을 설정하여 사용자 기본값을 재정의 RequestedTheme 하고 사용되는 테마를 지정할 수 있습니다. 사용자가 앱에 대해 밝은 테마 또는 어두운 테마를 선택할 수 있도록 UI를 제공하는 경우 기본값인 Windows 개인 설정에서 선택한 옵션을 사용하여 다시 전환하는 옵션도 제공해야 합니다.

앱이 실행되는 동안에는 설정되지 않고 앱이 시작될 때만 테마를 설정할 수 있습니다. 앱이 실행되는 동안 설정을 RequestedTheme 시도하면 예외(NotSupportedException Microsoft .NET 코드의 경우)가 throw됩니다. 사용자에게 앱 UI의 일부인 테마를 선택할 수 있는 옵션을 제공하는 경우 앱 데이터에 설정을 저장하고 앱을 다시 시작할 때 적용해야 합니다. (앱 설정에 대한 자세한 내용은 설정 및 기타 앱 데이터 저장 및 검색을 참조하세요.)

FrameworkElement.RequestedTheme 속성을 사용하고 UI의 특정 요소에 값을 설정하는 경우 가 적용된 후 Application.RequestedTheme 런타임에 특정 테마 값을 변경할 수 있습니다.

시스템 값을 사용하는 "HighContrast" 테마도 있지만 앱 및 앱 코드는 앱을 고대비로 전환하는 다른 기술을 사용합니다. RequestedTheme 사용자가 고대비 모드에서 실행 중인 경우 속성은 무시됩니다. 대비 테마XAML 고대비 샘플을 참조하세요.

앱은 런타임에 테마를 전환할 수 없지만 사용자는 할 수 있습니다. 예를 들어 사용자는 Alt+Shift+PrtScn 키 바로 가기를 사용하여 앱이 실행되는 동안 고대비 테마를 사용하도록 설정할 수 있습니다. 이 경우 XAML 리소스 시스템은 {ThemeResource} 태그 확장 사용에 대한 리소스 값을 다시 계산합니다. 색 및 브러시와 같은 테마에 적합한 리소스는 원래 해당 테마를 요청한 앱이 아니더라도 현재 테마에 적합한 값을 사용합니다.

테마별 리소스는 일반적으로 XAML의 별도 리소스 사전에 정의됩니다. 이 리소스 사전은 컨트롤 템플릿에 사용되는 기본 ResourceDictionary의 ThemeDictionaries 속성에서 가져옵니다.

적용 대상

추가 정보