Xamarin Forms标签换行

20

我在Xamarin forms页面中有一个Label,它从其视图模型接收其Text,而文本包含\n字符。我该如何使Label自动将文本拆分成两行?


它应该自动分成两行。 - Utsav Dawn
当然应该这样,但不幸的是它并没有。请注意,此文本来自资源文件,而不是XAML的一部分。 - IdoT
这在iOS/Android上发生了吗? - Prashant Cholachagudda
7个回答

54

非常简单,只需添加以下 Unicode 代替 \n

 


例如:

Text="General 
 Studies - I"

9

解决这个问题的一种方法是在您的虚拟机中将 '\n' 替换为 System.Environment.NewLine

string Text = "Text first line\nText second line".Replace("\n", System.Environment.NewLine);

https://stackoverflow.com/a/56981145/4230687


在我看来,这是最好的解决方案,它可以更可靠地在不同设备上工作,而使用Unicode方法在三星平板电脑上测试时无法正常工作。 - losh
在C#中,我使用字符串Text = String.Format(“第一行{0}第二行”,System.Environment.NewLine); - Tony

6
你可以这样做:

你可以像这样做:

Text = "First line string
Second line string"

2

Xamarin论坛的一个帖子复制

很可能是你的代码:

<Label FontSize="Medium" TextColor="Gray" Text="{translation:TranslationResource MyExpertsView_NoExpertsText}"  IsVisible="{Binding IsNoExpertsFound}"></Label>

由于您的文本是从资源文件中检索出来的,LabelText 属性将输入视为纯文本,并且不允许任何转义字符。

您可以考虑对TranslationResource中的字符串进行预处理(将所有 \n 替换为换行符)。


谢谢Alex,只有动态更改代码中的文本才能起作用。 - IdoT

2
最简单的方法是使用“Shift+Enter”在您的资源中添加新行。

1

如果你想在ViewModel中更改它,可以使用这个方法。它将更新字符串中的所有\n,而string.Replace只会更改第一个出现。

    // Replace \n to Environtment.NewLine
    public string StringUpdateNewLineFormat(string sentences)
    {
        return Regex.Replace(sentences, @"^""|""$|\\n?", System.Environment.NewLine);
    }}

0

我只是使用\n,我正在使用XAML,并且通过标签上的Binding绑定文本。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接