我有多个TextBlock,它们的文本是通过DynamicResource插入的。它们都设置为TextWrapping="Wrap"。但在这些文本字符串中,我有一些不允许被分割的单词,这些单词必须作为整个单词保留。
通过Xaml中硬编码的文本,可以通过TextBlock内部的Textblock轻松解决此问题:
通过Xaml中硬编码的文本,可以通过TextBlock内部的Textblock轻松解决此问题:
<TextBlock TextWrapping="Wrap">
Example text with wrap and <TextBlock TextWrapping="NoWrap" Text=" example text without wrap"/
</TextBlock>
但是,当通过DynamicResource插入文本时,这种解决方案不起作用,因为文本没有被解析。
我如何在DynamicResource Text中结合nowrap和wrap,而不将其拆分成多个TextBlocks?
PS:我现在创建了一个示例来演示我想要的行为(绿色)以及解决它的失败尝试(红色,橙色,深红色):
<StackPanel HorizontalAlignment="Center" Width="80" Orientation="Vertical">
<TextBlock TextWrapping="Wrap" Foreground="green">
bla1 bla2 bla3 bla4 <TextBlock TextWrapping="NoWrap" Text="Together(en)"/> bla5 bla6 longWordWhichShouldBreak
</TextBlock>
<TextBlock TextWrapping="Wrap" Foreground="red">
bla1 bla2 bla3 bla4 Together(en) bla5 bla6 longWordWhichShouldBreak
</TextBlock>
<TextBlock TextWrapping="Wrap" Foreground="orange">
bla1 bla2 bla3 bla4 Together(en) bla5 bla6 longWordWhichShouldBreak
</TextBlock>
<TextBlock TextWrapping="WrapWithOverflow" Foreground="DarkRed">
bla1 bla2 bla3 bla4 Together(en) bla5 bla6 longWordWhichShouldBreak
</TextBlock>
</StackPanel>
TextBlock.Inlines
属性要比使用TextBlock.Text
属性更好。您不能期望Text
属性除了将文本作为文本处理外还能做其他事情。 - grek40<TextBlock Text="X"/>
时,你使用的是Text
属性,但是当你写<TextBlock>X</TextBlock>
时,使用的是TextBlock.Inlines
集合,而不是Text
属性。因此,如果不使用inlines,就不要指望能够模拟你编写的XAML。 - grek40