Chr*_*ell 2 xaml windows-runtime winrt-xaml windows-10 uwp
我正在使用黑暗主题为通用Windows平台编写一个应用程序,我注意到虽然我在使用ContentDialog该类显示模式对话框时正确地将所请求的主题设置为暗,但覆盖层会使整个页面变暗而不是变暗它.
在显示对话框之前
显示对话框:
由于没有ContentDialog控制叠加层的属性,如何覆盖正在使用的颜色?
经过一些实验后,我发现用于控制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)