为ContentDialog配置叠加背景颜色

Chr*_*ell 2 xaml windows-runtime winrt-xaml windows-10 uwp

我正在使用黑暗主题为通用Windows平台编写一个应用程序,我注意到虽然我在使用ContentDialog该类显示模式对话框时正确地将所请求的主题设置为暗,但覆盖层会使整个页面变暗而不是变暗它.

在显示对话框之前

叠加前的页面截图

显示对话框:

显示叠加后的页面截图

由于没有ContentDialog控制叠加层的属性,如何覆盖正在使用的颜色?

Chr*_*ell 7

经过一些实验后,我发现用于控制ContentDialog上面显示的叠加颜色的画笔SystemControlPageBackgroundBaseMediumBrush而不是更有可能看起来ContentDialogDimmingThemeBrush.

通过检查默认主题定义,它出现了明暗主题将这个画笔设置SystemBaseMediumColor为光主题上#99000000和黑暗主题上的颜色资源#99FFFFFF.这导致覆盖层使浅色主题变暗并使黑暗主题变亮.

由于SystemBaseMediumColor是其他画笔定义(例如用于非活动透视标题的画笔定义)的引用,因此必须覆盖SystemControlPageBackgroundBaseMediumBrush而不是仅仅为黑暗主题引用的颜色.

为此,我们需要App.xaml在资源XAML文件中或资源主题字典中重新定义画笔,该文件合并为App.xaml以下行:

<Application>

    <Application.Resources>

        <ResourceDictionary>

            <ResourceDictionary.ThemeDictionaries>

                <ResourceDictionary x:Key="Dark">

                    <SolidColorBrush 
                        x:Key="SystemControlPageBackgroundBaseMediumBrush" 
                        Color="#99000000"
                        />

                </ResourceDictionary>

           </ResourceDictionary.ThemeDictionaries>

       </ResourceDictionary>

    </Application.Resources>

</Application>
Run Code Online (Sandbox Code Playgroud)