영어로 읽기

다음을 통해 공유


Application.RequestedTheme 속성

정의

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

C#
public ApplicationTheme RequestedTheme { get; set; }
XAML
<application RequestedTheme="applicationThemeMemberName" .../>

속성 값

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

예제

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

XAML
<ToggleSwitch Header="Theme" OnContent="Light" OffContent="Dark"
              Toggled="ToggleSwitch_Toggled" Loaded="ToggleSwitch_Loaded"/>
C#
private void ToggleSwitch_Toggled(object sender, RoutedEventArgs e)
{
    // Save theme choice to LocalSettings. 
    // ApplicationTheme enum values: 0 = Light, 1 = Dark
    ApplicationData.Current.LocalSettings.Values["themeSetting"] =
                                                     ((ToggleSwitch)sender).IsOn ? 0 : 1;
}

private void ToggleSwitch_Loaded(object sender, RoutedEventArgs e)
{
    ((ToggleSwitch)sender).IsOn = App.Current.RequestedTheme == ApplicationTheme.Light;
}

App.xaml.cs

C#
public App()
{
    this.InitializeComponent();

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

    if (value != null)
    {
        // Apply theme choice.
        App.Current.RequestedTheme = (ApplicationTheme)(int)value;
    }
}

설명

기본 제공되는 두 가지 테마는 "밝게" 및 "어둡게"입니다. 기본적으로 앱은 Windows 설정에서 사용자가 설정한 테마를 사용하여 실행됩니다(설정 > 개인 설정 > 색 > 기본 앱 모드 선택). 앱의 RequestedTheme 속성을 설정하여 사용자 기본값을 재정의하고 사용되는 테마를 지정할 수 있습니다.

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

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

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

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

테마별 리소스는 일반적으로 XAML의 별도 리소스 사전에 정의됩니다. 이 리소스 사전은 컨트롤 템플릿에 사용되는 기본 ResourceDictionary의 ThemeDictionaries 속성에서 가져옵니다. 테마별 리소스에 대한 기본 시스템 리소스 사전의 이름은 ThemeResources.xaml입니다. 이 파일은 Windows SDK(소프트웨어 개발 키트) 설치의 (Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic 폴더에서 사용할 수 있습니다.

이전 버전에 대한 참고 사항

Windows 8.x 기본적으로 앱은 "어두운" 테마를 사용하여 실행됩니다(themeresources.xaml 파일에서 "어두운" 리소스의 키 이름은 "기본값").

  • Windows에서 RequestedTheme을 ElementTheme.Default 로 설정하면 항상 "어둡게"가 테마가 됩니다.
  • Windows Phone ElementTheme.Default 값을 사용하면 사용자가 설정한 시스템 테마에 대한 쿼리가 생성됩니다.

적용 대상

제품 버전
WinRT Build 10240, Build 10586, Build 14383, Build 15063, Build 16299, Build 17134, Build 17763, Build 18362, Build 19041, Build 20348, Build 22000, Build 22621, Build 26100

추가 정보