Принудительное использование приложением UWP темы по умолчанию

Для текущей версии нашего приложения мы не поддерживаем режим высокой контрастности. Поддержка высокой контрастности (с правильно разработанным пользовательским интерфейсом и т. Д.) - это то, что мы добавим в наше приложение в следующем выпуске / обновлении.

Существует ли простой способ заставить приложение UWP использовать тему по умолчанию, даже если пользователь перевел свои устройства в режим высокой контрастности?

В моем app.xaml я определил следующее:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml">
    <ResourceDictionary.ThemeDictionaries>
        <ResourceDictionary x:Key="HighContrast">
           copy/pasted styles into here
        </ResourceDictionary>
    </ResourceDictionary.ThemeDictionaries>
</ResourceDictionary>

Но скопировал содержание <ResourceDictionary x:Key="Default"> от C:\Program Files (x86)\Windows Kits\10\DesignTime\CommonConfiguration\Neutral\UAP\10.0.10586.0\Generic\themeresources.xaml в словарь тем HighContrast моего приложения, полагая, что это заставит приложение по-прежнему использовать тему по умолчанию, даже если устройство переведено в режим HighContrast, но это не имело никакого эффекта.

Кто-нибудь знает, есть ли способ заставить приложение использовать тему по умолчанию?

1 ответ

Официально ответ - нет. Ваш метод - хакерский путь.

Приложение UWP по умолчанию поддерживает высококонтрастные темы. Если пользователь выбрал, что он хочет, чтобы система использовала высококонтрастную тему из системных настроек или инструментов специальных возможностей, платформа автоматически использует цвета и настройки стиля, которые создают высококонтрастный макет и рендеринг для элементов управления и компонентов в пользовательском интерфейсе.

Для получения дополнительной информации см. Высококонтрастные темы.

Как известно, настройка RequestedTheme не может работать в режиме высокой контрастности. И вы скопировали содержимое <ResourceDictionary x:Key="Default"> в app.xaml. Вы сказали, что это не имело никакого эффекта. Причина в содержании Defaultнекоторые свойства используют такой цвет: Color="{StaticResource SystemChromeBlackHighColor}", Этот цвет основан на теме, которую выбрал пользователь.

Когда пользователь выбирает высококонтрастную тему, система заставит все приложения адаптироваться к высококонтрастной теме. Если ваше приложение является единственным, которое не использует высококонтрастный цвет, ваше приложение будет плохо адаптировано к другим приложениям.

Другие вопросы по тегам