У меня есть несколько TextBlocks, текст которых вставлен через DynamicResource. Все они имеют значение TextWrapping = "Wrap". Но внутри этих текстовых строк у меня есть слова, которые нельзя разделять. Эти слова нужно сохранить как единое слово.
С жестко запрограммированным текстом в Xaml это довольно легко решить с помощью TextBlock внутри Textblock:
<TextBlock TextWrapping="Wrap">
Example text with wrap and <TextBlock TextWrapping="NoWrap" Text=" example text without wrap"/
</TextBlock>
Но это решение не работает, когда Text the вставляется через DynamicResource, потому что текст не анализируется.
Как я могу объединить nowrap и wrap внутри текста 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>
TextBlock.Inlines
, чем со свойствомTextBlock.Text
. Вы не можете ожидать, что свойствоText
будет делать что-то еще, кроме как просто съесть ваш текст как ... ну, текст. - person grek40   schedule 28.02.2017<TextBlock Text="X"/>
, вы используетеText
, но когда вы пишете<TextBlock>X</TextBlock>
, используется коллекцияTextBlock.Inlines
, не свойствоText
. Так что не надейтесь подражать написанному вами XAML без использования inlines. - person grek40   schedule 28.02.2017