Как применить запасной цвет к акрилу в обновлении создателей
После этого поста: Как использовать Acrylic Accent в Windows 10 Creators Update?
Я успешно добавил акрил в свое приложение в обновлении Creators. К сожалению, когда прозрачность отключена в настройках цвета в Windows, фон моего приложения является либо очень темно-серым в светлой теме, либо почти полностью черным в темной теме, несмотря на тот факт, что я установил фон моей сетки выше относительной панели. это делает окно прозрачным для: Background="{ThemeResource CommandBarBackground}".
Кто-нибудь знает, как реализовать запасной цвет в обновлении создателей, чтобы при отключении прозрачности фон переключался на исходный цвет фона, который был установлен.
1 ответ
Кто-нибудь знает, как реализовать запасной цвет в обновлении создателей, чтобы при отключении прозрачности фон переключался на исходный цвет фона, который был установлен.
В классе U ISettings есть свойство AdvancedEffectsEnabled, которое указывает, включена ли настройка эффектов прозрачности системы. Когда он вернется false
Вы можете сбросить фон до исходного цвета фона.
Также возникает событие AdvancedEffectsEnabledChanged, когда параметр расширенных эффектов пользовательского интерфейса системы включен или отключен. Вы можете объединить это событие с AdvancedEffectsEnabled
собственности и использовать их следующим образом:
UISettings uiSettings = new UISettings();
uiSettings.AdvancedEffectsEnabledChanged += UiSettings_AdvancedEffectsEnabledChangedAsync;
private async void UiSettings_AdvancedEffectsEnabledChangedAsync(UISettings sender, object args)
{
if (sender.AdvancedEffectsEnabled)
{
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
//TODO: Apply Acrylic Accent
});
}
else
{
await this.Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
{
//TODO: Reset Background
});
}
}
Обратите внимание, что событие AdvancedEffectsEnabledChanged может не вызываться в потоке пользовательского интерфейса. Чтобы изменить цвет фона, нам понадобится метод Core Dispatcher.RunAsync.