我可以使用TextBlock TextTrimming仅修剪第一次运行,而不是整个事情吗?

时间:2012-01-12 01:42:17

标签: wpf textblock word-wrap

我有一个像这样的TextBlock:

  <TextBlock TextWrapping="Wrap" TextTrimming="CharacterEllipsis" MaxHeight="50">
    <TextBlock.Inlines>
      <Run Text="Some text that might be long so I want it wordwrapped." />
      <Run Text="Link" />
    </TextBlock.Inlines>
  </TextBlock>

第二次运行的格式类似于超链接。不幸的是,当第一次运行足够长以强制省略号时,Link就会被切断。我想要发生的是:

Some text that might
be long so I...  Link

可以这样做吗?

1 个答案:

答案 0 :(得分:2)

将TextTrimming设置为CharacterEllipsis我假设您希望它切断太长的行。

例)

<TextBlock.Inlines>
  <Run Text="Some text that might be long so I want it wordwrapped." />
  <Run Text="Link" />
</TextBlock.Inlines>

应该显示
“有些文字可能很长......” “链接”

<TextBlock TextWrapping="NoWrap" TextTrimming="CharacterEllipsis" MaxHeight="50">
   <TextBlock.Inlines>
      <Run Text="Some text that might be long so I want it wordwrapped." />
      <Run Text="Link" />
   </TextBlock.Inlines>
</TextBlock>

如果这是你想要达到的目的,那么只需删除TextWrapping =“Wrap”

以下是一些需要注意的事项:

是否必须一个TextBlock ? 如果没有,你可以做以下......

<WrapPanel>
    <TextBlock Text="Some text that might be long so I want it wordwrapped. " TextWrapping="Wrap"/>
    <TextBlock TextWrapping="Wrap">
       <Hyperlink NavigateUri="http://www.stackoverflow.com">Link</Hyperlink>
    </TextBlock>
</WrapPanel>

是否必须是 TextBlock ? 如果没有,你可以做以下......

<RichTextBox IsReadOnly="True" Background="Transparent" BorderThickness="0" BorderBrush="Transparent">
<FlowDocument>
    <Paragraph>
        Some text that might be long so I want it wordwrapped.
        <Hyperlink NavigateUri="http://www.stackoverflow.com">Link</Hyperlink> .
    </Paragraph>
</FlowDocument>

这些解决方案是否有任何帮助?