【问题标题】:How to wrap controls in StackPanel?如何在 StackPanel 中包装控件?
【发布时间】:2017-06-28 17:29:30
【问题描述】:

我的问题类似于this question 但解决方案需要使用 UWP 中不可用的 DockPanel

我在左边有一个CheckBox,在右边有一个StackPanel。这个StackPanel 有两个TextBlocks 和一个Hyperlink。我想将文本包装在这个StackPanel 中。我也试过用Grid 替换这个StackPanel,但我想不通。这是 XAML:

<Grid Grid.Row="22"
    Grid.ColumnSpan="2">

<Grid.ColumnDefinitions>
    <ColumnDefinition Width="Auto"/>
    <ColumnDefinition Width="*"/>
</Grid.ColumnDefinitions>

<CheckBox Grid.Column="0"/>
    <StackPanel Orientation="Horizontal"
                Grid.Column="1">

        <TextBlock Text="{x:Bind TermsViewModel.Terms1}"
                   TextWrapping="Wrap"/>
        <HyperlinkButton Content="{x:Bind Link}"
                         NavigateUri="someRandomUri"/>
        <TextBlock Text="{x:Bind TermsViewModel.Terms2}"
                   TextWrapping="Wrap"/>
    </StackPanel>
</Grid>

【问题讨论】:

  • TextBlockHyperlinkButton这两个应该宽度相同还是不同?
  • @VijayNirmal 可以不同

标签: xaml uwp windows-10 windows-10-universal


【解决方案1】:

要在段落中间使用超链接,您不想使用StackPanel。您只需要TextBlock。这是代码示例

<TextBlock TextWrapping="Wrap">
    <Run Text=""/>
    <Hyperlink NavigateUri="someRandomUri">
        <Run Text=""/>
    </Hyperlink>
    <Run Text=""/>
</TextBlock>

了解更多关于Create a Hyperlink text element

【讨论】:

  • 不。分为 3 个不同的列,最后一列的文本将仅在第三列内换行。文本应该从第一列开始(在新行上)。
  • 我听不懂。你能解释清楚一点吗?
  • 当最后一列的文本被换行时,它只停留在最后一列。所以第一行充满了文本(从第一列开始),但在第二行,文本从第三列开始。我也希望它从第二行的第一列开始(这样看起来所有文本都在一个 TextBlock 中)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-10-24
  • 2016-11-12
  • 1970-01-01
  • 1970-01-01
  • 2017-08-01
  • 2017-01-15
  • 1970-01-01
相关资源
最近更新 更多