如何在StackPanel中包装一组TextBlocks?

时间:2014-08-18 13:34:56

标签: windows-phone-8 windows-phone stackpanel

这是我的代码。

<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>属性来定义所有这些,因为我想在上面的代码中为Tap定义的TextBlocks注册Links事件。此处也不需要使用ButtonHyperlink s。使用按钮我也会遇到包装内容的相同问题。

1 个答案:

答案 0 :(得分:1)

我在这里看到三个选项:

  1. 使用RichTextBox
  2. 从Windows Phone Toolkit中提升WrapPanel
  3. 自己编写Panel
  4. 我认为#1应该是首选方法,假设您可以使其符合要求。 RichTextBox可以包含与Hyperlinks内联的纯文本 - 后者不会公开Tap事件,但它确实有Click,这可能就足够了。

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

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