如何在XAML源码中拆分长字符串?
解决XAML Label超长Text属性的多行格式化问题
哈哈,这个问题我之前写XAML的时候也踩过坑!直接换行缩进确实会把多余的空格和换行符带到Label的显示内容里,给你几个实用的解决办法:
方法1:使用CDATA块(最推荐)
XML的CDATA块可以让你在里面自由换行、缩进,而不会把这些格式符号解析到实际文本中,完美解决你的需求。用法如下:
<Label VerticalOptions="Start" HorizontalOptions="StartAndExpand"> <Label.Text> <![CDATA[Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.]]> </Label.Text> </Label>
注意:如果不想在显示的文本里保留换行,只需要把CDATA里的内容在代码中换行缩进,但实际文本不换行即可,CDATA只会保留你写的实际文本内容,代码里的换行缩进会被忽略。
方法2:使用元素拼接文本
如果你的XAML环境支持(比如WPF、Xamarin.Forms),可以用<Run>元素把长文本拆分成多个片段,每个片段单独放在一行,这样代码结构清晰,且不会引入多余空格:
<Label VerticalOptions="Start" HorizontalOptions="StartAndExpand"> <Label.Text> <Run Text="Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua."/> <Run Text=" At vero eos et accusam et justo duo dolores et ea rebum."/> <Run Text=" Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."/> <Run Text=" Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua."/> <Run Text=" At vero eos et accusam et justo duo dolores et ea rebum."/> <Run Text=" Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet."/> </Label.Text> </Label>
提示:如果不需要片段之间的空格,直接去掉<Run>文本开头的空格即可,显示时会自动拼接成连续文本。
额外建议:使用资源文件管理长文本
如果这段文本需要复用或者本地化,更推荐把它放到项目的资源文件(比如.resx)中,然后通过绑定引用,这样XAML会更简洁:
<Label Text="{x:Static resources:AppResources.LongLabelText}" VerticalOptions="Start" HorizontalOptions="StartAndExpand"/>
内容的提问来源于stack exchange,提问作者testing
相关产品推荐
相关产品推荐

