1

我正在尝试制作由多个TextBlocks组成的单个文本块

- 目标

例如,我想实现如下行:

  • “我在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 设置了宽度,但该文本不适合 StackPanel。

我想在运行时生成此代码。我不知道我需要格式化多少字。

用突出显示的搜索关键字显示 SearchResults 的一种。

- 问题

如何使用 StackPanel 或其他方法来实现上述目标?具有以下约束。

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

非常感谢

4

1 回答 1

2

您应该使用一个<TextBlock>可以包含多个<Run>s 的单个,每个 s 可以有自己的格式。如果要插入换行符,可以使用<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>堆叠在一起。

有关更多信息和示例,请参阅此帖子:http ://www.danderson.me/posts/working-with-the-wpf-textblock-control/


要在 TextBlock 中对多个运行进行数据绑定,请参阅此答案:Databinding TextBlock Runs in Silverlight / WP7

于 2013-05-28T14:46:41.450 回答