修改App.Current.Resources中DynamicResource后TextColor不生效求助
问题原因
- Preferences存取键不匹配。你在
Preferences.Set时使用的键是defaultTextColor,但Preferences.Get时使用的键是TextColor,二者不一致导致每次读取到的都是默认色值#141000,你存储的#ffcc00根本没有被取出使用。 - 资源类型不匹配。你在App.xaml中定义的
defaultTextColor是Color类型,但你直接将字符串格式的十六进制色值赋值给该资源,动态资源绑定无法自动完成字符串到Color类型的转换,因此颜色更新不生效。
你原有Style中使用{DynamicResource defaultTextColor}绑定的逻辑是正确的,不需要调整,只需修改后台代码即可。
修复后的代码
private void Button_Clicked_3(object sender, EventArgs e) { int value = Convert.ToInt32(Labeltest3.Text); Preferences.Set("FontSize", value); App.Current.Resources["defaultFontSize"] = Preferences.Get("FontSize", 14); // 统一存取使用的Key Preferences.Set("defaultTextColor", "#ffcc00"); // 取出字符串色值后转换为Color类型再赋值给资源 var colorHex = Preferences.Get("defaultTextColor", "#141000"); App.Current.Resources["defaultTextColor"] = Color.FromHex(colorHex); }
内容的提问来源于stack exchange,提问作者Bas H
相关产品推荐
相关产品推荐

