如何在创建者更新中将后备颜色应用于丙烯酸

时间:2017-07-10 11:12:12

标签: c# xaml uwp windows-composition-api fluent-design

关注此帖后:How to use Acrylic Accent in Windows 10 Creators Update?

我已在Creators Update上成功将丙烯酸添加到我的应用中。不幸的是,当在Windows中的颜色设置中禁用透明度时,我的应用程序的背景要么是Light Theme中的深灰色,要么是几乎完全黑暗的黑暗主题,尽管我设置了我的网格背景& #39; s使窗口透明的相对面板上方:Background =" {ThemeResource CommandBarBackground}"。

有没有人知道如何在创建者更新中实现后备颜色,以便在禁用透明度时,背景会切换到设置的原始背景颜色。

1 个答案:

答案 0 :(得分:1)

  

有没有人知道如何在创建者更新中实现后备颜色,以便在禁用透明度时,背景会切换到设置的原始背景颜色。

AdvancedEffectsEnabled中有U​ISettings Class属性,表示系统透明效果设置是否已启用。当它返回false时,您可以将背景重置为原始背景颜色。

启用或禁用系统高级UI效果设置时,还会发生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
        });
    }
}

请注意,UI线程中可能不会引发AdvancedEffectsEnabledChanged事件。要更改背景颜色,我们需要Core​Dispatcher.RunAsync方法。