如何在StackPanel中包装一组TextBlocks?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在StackPanel中包装一组TextBlocks?相关的知识,希望对你有一定的参考价值。

这是我的代码。

<StackPanel Orientation="Horizontal">
    <TextBlock Name="Link1" Text="this is link1"></TextBlock>
    <TextBlock Name="Text1" Text=" some text "></TextBlock>
    <TextBlock Name="Link2" Text="this is link2"></TextBlock>
    <TextBlock Name="Text2" Text=" some other text "></TextBlock>
    <TextBlock Name="Link3" Text="this is link3></TextBlock>
</StackPanel>

现在这个StackPanel将离开屏幕。我想把它的内容包装到屏幕末端的下一行。

我没有使用TextBlock的<Run>属性来定义所有这些,因为我想在上面的代码中为textBlocks注册Tap事件定义为Links。在这里也不需要使用Buttons和Hyperlinks。使用按钮我也会遇到包装内容的相同问题。

答案

我在这里看到三个选项:

  1. 使用RichTextBox
  2. 从Windows Phone Toolkit中提升WrapPanel
  3. 写你自己的Panel

我认为#1应该是首选方法,假设您可以使其符合要求。 RichTextBox可以包含与Hyperlinks内联的纯文本 - 后者不公开Tap事件,但它确实有Click,这可能就足够了。

如果做不到这一点,#2也应该相当简单,如果你可以使用WrapPanel将TextBlocks视为原子的限制(即,它不会包装文本块内文本),这可能就足够了。

方法#3在理论上允许更多的灵活性,但实施需要一些努力和专业知识。当您可能需要根据新的或不可预见的要求调整自定义面板时,您可能还会面临一些麻烦。

以上是关于如何在StackPanel中包装一组TextBlocks?的主要内容,如果未能解决你的问题,请参考以下文章

Intellij:如何在 Javadoc 中包装一段文本?

从 TextBlock 获取显示的文本

网格列中的 XAML 拉伸文本块

如何在聚合中包含下一组的第一行?

如何让 ScrollViewer 在 StackPanel 中工作?

如何让 StackPanel 的孩子向下填充最大空间?