0

关注此帖子后:如何在 Windows 10 Creators Update 中使用 Acrylic Accent?

我已经在创作者更新上成功地将亚克力添加到我的应用程序中。不幸的是,当在 Windows 的颜色设置中禁用透明度时,我的应用程序的背景在浅色主题中是非常深的灰色,或者在深色主题中几乎完全是黑色,尽管我将网格的背景设置在相关面板上方使窗口对以下内容透明:Background="{ThemeResource CommandBarBackground}"。

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

4

1 回答 1

1

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

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

并且还有一个AdvancedEffectsEnabledChanged事件发生在系统高级 UI 效果设置启用或禁用时。您可以将此事件与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方法。

于 2017-07-13T04:35:00.280 回答