我有多个TextBlocks,其文本通过DynamicResource插入。它们都设置为TextWrapping =“Wrap”。但是在这些文本字符串中,我有不允许被分割的单词。这些词语必须作为一个整体词汇。TextBlock TextWrapping将Wrap和NoWrap合并在一起并通过DynamicResource显示文字
随着XAML中硬编码的文本这是很容易通过一个TextBlock解决的文本块中:
<TextBlock TextWrapping="Wrap">
Example text with wrap and <TextBlock TextWrapping="NoWrap" Text=" example text without wrap"/
</TextBlock>
但是,当文本的通过DynamicResource插入,因为文字是没有得到解析这个解决方案是行不通的。
如何将NOWrap和包装在DynamicResource文本中而不将其分割为多个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>
听起来像你的所谓的“DynamicResource”是不适合的结构在WPF使用。如何预处理一系列文本块,其中每个块都有其显示选项? – grek40
是预处理成多个文本序列,在nowrap和包装件中是一种解决方案。但它相对昂贵。我认为有一个更好的解决方案,只是在包装文本块中只保留一个单词。 – CR500
通常,您可能比TextBlock.Text属性拥有更好的TextBlock.Inlines属性。你不能指望'Text'属性做任何事情,而不仅仅是把你的文本当作......好文本。 – grek40