如何使用Windows 11系统主题色创建SolidColorBrush资源
问题原因
你提供的报错代码存在两个核心错误:
x:Key属性需要填写资源的唯一标识符,你错误传入了SystemColors.HighlightColor颜色值作为键,不符合资源定义规则- 手动写死了
Color="Red",完全没有关联系统主题色,逻辑不成立
解决方案
方案1:基于Win11窗口玻璃主题色创建SolidColorBrush
你之前正常调用的SystemParameters.WindowGlassBrush对应的原生主题色存放在SystemParameters.WindowGlassColor属性中,直接绑定该值到Color属性即可生成纯色画刷:
<SolidColorBrush x:Key="Win11ThemeSolidBrush" Color="{Binding Source={x:Static SystemParameters.WindowGlassColor}}"/>
方案2:基于系统高亮主题色创建SolidColorBrush
如果你需要用的是SystemColors.HighlightColor对应的系统高亮色,调整属性赋值位置即可:
<SolidColorBrush x:Key="SystemHighlightSolidBrush" Color="{x:Static SystemColors.HighlightColor}"/>
调用示例
创建完成后可以像普通资源一样全局调用,效果和直接调用系统画刷完全一致:
<Style TargetType="{x:Type ProgressBar}"> <Setter Property="Foreground" Value="{StaticResource Win11ThemeSolidBrush}"/> </Style>
如需响应系统主题色实时切换,将
StaticResource替换为DynamicResource,同时把Color属性的绑定改为动态绑定即可。
内容的提问来源于stack exchange,提问作者Toni
相关产品推荐
相关产品推荐

