Поделиться через


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.

Примеры

В этом примере показано, как сохранить запрошенную тему в параметрах локального приложения, а затем получить и применить ее при перезапуске приложения.

<ToggleSwitch Header="Theme" OnContent="Light" OffContent="Dark"
              Toggled="ToggleSwitch_Toggled" Loaded="ToggleSwitch_Loaded"/>
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

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 во время работы приложения вызывает исключение (NotSupportedException для кода Microsoft .NET). Если предоставить пользователю возможность выбрать тему, которая является частью пользовательского интерфейса приложения, необходимо сохранить параметр в данных приложения и применить его при перезапуске приложения. (Дополнительные сведения о параметрах приложения см. в разделе Хранение и извлечение параметров и других данных приложения).

Вы можете изменить определенные значения темы во время выполнения после применения Application.RequestedTheme, если вы используете свойство FrameworkElement.RequestedTheme и задаете значения для определенных элементов в пользовательском интерфейсе.

Существует также тема HighContrast, которая использует системные значения, но приложения и код приложения используют другой метод для переключения приложения на высокую контрастность. Свойство RequestedTheme игнорируется, если пользователь работает в режиме высокой контрастности. См. статью Темы с высокой контрастностью и Примеры стилей xaml с высокой контрастностью.

Хотя приложение не может переключать темы во время выполнения, пользователь может (начиная с Windows 8.1). Например, пользователь может включить тему с высокой контрастностью во время работы приложения с помощью сочетания клавиш ALT+SHIFT+PrtScn. В этом случае система ресурсов XAML пересчитает значения ресурсов для любого использования расширения разметки {ThemeResource} . Ресурсы, соответствующие теме, такие как цвета и кисти, используют значения, соответствующие текущей теме, даже если изначально эта тема запрашивается не в приложении.

Ресурсы, относящиеся к конкретной теме, обычно определяются в отдельном словаре ресурсов в XAML. Этот словарь ресурсов получен из свойства ThemeDictionaries основного resourceDictionary , используемого для шаблонов элементов управления. Системный словарь ресурсов по умолчанию для ресурсов, относящихся к теме, называется ThemeResources.xaml. Этот файл доступен в папке (Program Files)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP<SDK version>\Generic из установки пакета sdk для Windows.

Примечания для предыдущих версий

Windows 8.x. По умолчанию приложение запускается с использованием темной темы (в файле themeresources.xaml имя ключа для ресурсов Dark — Default).

  • В Windows для параметра RequestedTheme значение ElementTheme.Default всегда будет темой.
  • На Windows Phone использование значения ElementTheme.Default приведет к запросу системной темы, заданной пользователем.

Применяется к

См. также раздел