使用Microsoft.UI.Xaml.Controls时设置强调色不生效如何解决
正确修改UNO Platform应用强调色的方法
你的配置不生效的核心原因是自定义资源的加载顺序不对,XAML资源遵循后加载覆盖先加载的规则,你写在MergedDictionaries节点外的自定义资源,会被后续加载的XamlControlsResources默认资源覆盖,所以没有效果。
按以下步骤修改即可:
1. 调整资源加载顺序,补全强调色相关资源
修改App.xaml中的资源配置如下:
<Application.Resources> <ResourceDictionary> <ResourceDictionary.MergedDictionaries> <XamlControlsResources xmlns="using:Microsoft.UI.Xaml.Controls" /> <!-- 自定义资源必须放在XamlControlsResources之后才能覆盖默认值 --> <ResourceDictionary> <Color x:Key="SystemAccentColor">#E64A19</Color> <Color x:Key="SystemColorHighlightColor">#E64A19</Color> <SolidColorBrush x:Key="SystemColorControlAccentBrush" Color="{StaticResource SystemAccentColor}" /> <!-- 补充不同透明度的强调色变体,覆盖所有控件的强调色调用 --> <Color x:Key="SystemAccentColorLight1">#FFE85A2C</Color> <Color x:Key="SystemAccentColorLight2">#FFEB6A40</Color> <Color x:Key="SystemAccentColorLight3">#FFEE7B54</Color> <Color x:Key="SystemAccentColorDark1">#FFCF4217</Color> <Color x:Key="SystemAccentColorDark2">#FFB83B14</Color> <Color x:Key="SystemAccentColorDark3">#FFA13412</Color> </ResourceDictionary> </ResourceDictionary.MergedDictionaries> </ResourceDictionary> </Application.Resources>
2. 跨平台适配(可选)
如果你的应用要部署到iOS或者macOS平台,需要额外关闭系统强调色同步,在对应平台的入口代码AppDelegate.cs的FinishedLaunching方法中添加以下代码即可:
Uno.UI.FeatureConfiguration.Style.UseSystemAccentColor = false;
修改完成后重新编译运行,所有控件的强调色就会替换为你设置的橙红色。
内容的提问来源于stack exchange,提问作者richej
相关产品推荐
相关产品推荐

