Xamarin.Forms代码后台中按钮文本的>和<转义字符未正常转换问题
解决C#后台设置按钮Text时转义字符不生效的问题
嗨,我来帮你搞定这个问题!你遇到的情况是因为XAML和C#代码对字符串的处理逻辑不一样:XAML的解析引擎会自动识别并解析HTML实体转义字符(比如>),但在C#后台代码里,直接赋值的字符串会被当作字面量处理,不会自动解码这些转义字符,所以UI上就显示了>而不是>。
这里有两种简单的解决办法:
方法一:直接使用字符本身
因为>和<不属于C#的特殊转义字符,你可以直接在字符串里写这些符号,不需要转义:
CustomButton moveToNewCheckButton = new CustomButton { Text = ">", Style = (Style)Application.Current.Resources["MoveButtonStyle"], AutomationId = "MoveToNewCheckButton" };
这种方式最直接,也不需要额外的处理,推荐优先使用。
方法二:手动解码HTML转义字符
如果你因为某些原因必须使用转义后的字符串(比如字符串是从外部配置读取的),可以用.NET提供的工具类来手动解码:
// 先解码转义字符 string decodedText = System.Net.WebUtility.HtmlDecode(">"); CustomButton moveToNewCheckButton = new CustomButton { Text = decodedText, Style = (Style)Application.Current.Resources["MoveButtonStyle"], AutomationId = "MoveToNewCheckButton" };
注意:如果是.NET Framework项目,也可以用System.Web.HttpUtility.HtmlDecode,不过需要先引用System.Web程序集;而.NET Core/.NET 5+项目直接用System.Net.WebUtility就可以,不需要额外引用。
这样设置后,按钮上就能正确显示>符号啦!
内容的提问来源于stack exchange,提问作者Afsal
相关产品推荐
相关产品推荐

