我正在尝试制作一个由多个TextBlock
s
- 目标
例如,我希望实现如下所示:
我正在尝试的方式是
<StcakPanel Orientation="Horizontal" Width="400" >
<TextBlock Text="I read this line in a " TextWrapping="Wrap" />
<TextBlock Text="ListBox" FontStyle="Italic" TextWrapping="Wrap"/>
<TextBlock Text=", notice the multiple " TextWrapping="Wrap" />
<TextBlock Text="text formatting" FontWeight="Bold" TextWrapping="Wrap"/>
<StcakPanel>
- 问题
尽管为TextBlocks设置了TextWrapping,为StackPanel设置了Width,但文本仍然不适合StackPanel。
我想在运行时生成此代码。我不知道需要格式化多少字。
使用突出显示的搜索关键字显示SearchResults。
- 问题
如何使用StackPanel或其他方式实现上述目标?有以下约束。
非常感谢
答案 0 :(得分:2)
您应该使用单个<TextBlock>
,其中可以包含多个<Run>
,每个<Linebreak />
都有自己的格式。如果要插入换行符,可以使用<StackPanel Orientation="Horizontal" Width="400" >
<TextBlock>
<Run Text="I read this line in a" />
<Run Text="ListBox" FontStyle="Italic" />
<Run Text=", notice the multiple" />
<Run Text="text formatting" FontWeight="Bold" />
</TextBlock>
<StackPanel>
控件。
<StackPanel>
此时你可能甚至不需要<TextBlocks>
,除非你将多个{{1}}堆叠在一起。
有关更多信息和示例,请参阅此帖子:http://www.danderson.me/posts/working-with-the-wpf-textblock-control/
要在TextBlock中对多个运行进行数据绑定,请参阅以下答案:Databinding TextBlock Runs in Silverlight / WP7