如何在TextBlock中设置文本格式?

时间:2013-05-28 14:42:50

标签: c# windows-phone-7 xaml

我正在尝试制作一个由多个TextBlock s

组成的单个文本块

- 目标

例如,我希望实现如下所示:

  • “我在 ListBox 中读取此行,请注意多个文本格式

我正在尝试的方式是

<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或其他方式实现上述目标?有以下约束。

  • 文字长度未知
  • 堆栈面板中的文本块数未知
  • 宽度和高度为未知

非常感谢

1 个答案:

答案 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