You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用DynamicResource修改NavigationPage返回按钮的颜色

问题原因

{DynamicResource xxx}是XAML专属的标记扩展语法,不能直接作为字符串传入C#方法中调用。你之前的写法会让Color.FromHex尝试解析"{DynamicResource defaultBackgroundColor}"这个普通字符串为十六进制颜色值,显然无法解析,因此不生效。


解决方法

方法1:直接读取当前资源值赋值(静态更新,资源变化后需重新调用)

如果你的defaultBackgroundColor资源中存储的是十六进制颜色字符串,直接取出后转Color即可:

var colorHex = App.Current.Resources["defaultBackgroundColor"].ToString();
NavigationPage.SetIconColor(this, Color.FromHex(colorHex));

如果资源中存储的已经是Color类型对象,直接转换类型使用即可:

var color = (Color)App.Current.Resources["defaultBackgroundColor"];
NavigationPage.SetIconColor(this, color);

方法2:绑定动态资源(动态更新,资源变化自动同步颜色)

如果需要实现和XAML中DynamicResource完全一致的动态生效效果,直接调用可绑定属性的动态资源绑定方法即可,不需要手动读取资源赋值:

this.SetDynamicResource(NavigationPage.IconColorProperty, "defaultBackgroundColor");

使用该写法后,后续只要defaultBackgroundColor的资源值发生变更,返回按钮的颜色会自动同步更新,无需额外手动调用赋值代码。


内容的提问来源于stack exchange,提问作者Bas H

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:15:00