如何在XAML源代码中打破长字符串?

时间:2018-05-25 10:09:11

标签: xaml xamarin xamarin.forms code-formatting

愚蠢的问题,但Google / SO搜索没有给我带来理想的结果。我有一个很长的字符串:

<Label 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. 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."
       VerticalOptions="Start" 
       HorizontalOptions="StartAndExpand" />

如何在多行上分解Text属性以获得更好的代码格式?是否有选项?

如果我输入一个新行并添加一些空格(用于缩进),标签也包含空格......

2 个答案:

答案 0 :(得分:1)

有趣的是我以前没有真正想过这个,但这是一个很好的问题!我一直只是在编辑器上保密,所以我从未注意到......

看起来像是魔咒?如果是这样,你可以添加该标签,因为wpf等格式为<Label Content="blah"/>格式,所以一开始我很困惑。

但是,在WPF,Silverlight,UWP等中,你可以这样做,跳过ContentPresenter的测量,以显示整行,并在渲染时进行相应的包装;

<Label>
     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>

不幸的是我目前没有使用xamarin,所以如果事实证明是不同的,我只知道这个答案,但我希望它有所帮助。

答案 1 :(得分:1)

此问题与Xamarin无关。我使用WPF时遇到了同样的问题。

问题不仅发生在Label中,而且也出现在所有Controls中。每个Control都有一个Text属性。

原因是您使用Text="..."

使用Text属性来分配文本

解决方案,如Chris W所建议(可能没有意识到),是将Text属性的分配移动到开始标记和结束标记之间的部分;到<...></...>

之间

所以而不是

<TextBox Height="auto" TextWrapping="Wrap"
         Text="Lorem ipsum dolor sit amet, consetetur ... (etc.)"/>

使用:

<TextBox Height="auto" TextWrapping="Wrap">
    Lorem ipsum dolor sit amet, consetetur sadipscing elitr,
    sed diam nonumy eirmod tempor invidunt ut labore et dolore
    ...  (etc.)
<TextBox>

即使文本前面的空格/制表符也将替换为一个空格。

请注意,如果使用属性分配,则使用字符串引号:Text="...";
如果在开始标记和结束标记之间使用部分,则没有字符串引号。
这可能就是您可以在源代码中添加换行符的原因。