【问题标题】:Why can't I get my textblock to wrap为什么我不能让我的文本块换行
【发布时间】:2024-01-19 13:12:01
【问题描述】:
<ItemsControl ItemsSource="{Binding NavModel.NavCommands, UpdateSourceTrigger=PropertyChanged, Mode=TwoWay}" Grid.Column="0" Grid.Row="1" 
              ScrollViewer.HorizontalScrollBarVisibility="Disabled" HorizontalContentAlignment="Stretch">
  <ItemsControl.ItemTemplate>
       <DataTemplate>
           <TextBlock Height="20" Margin="10,10,0,0" TextWrapping="Wrap">
               <Hyperlink Command="{Binding Command}">
                    <Run Text="really really raelly long string"></Run>
               </Hyperlink>
            </TextBlock>
       </DataTemplate>
   </ItemsControl>

网格的宽度和高度由各种 * 值定义。

             <Grid.ColumnDefinitions>
                <ColumnDefinition Width="12*"/>
                <ColumnDefinition Width="3*"/>
                <ColumnDefinition Width="77*"/>
                <ColumnDefinition Width="3*"/>
                <ColumnDefinition Width="5*"/>
            </Grid.ColumnDefinitions>
            <Grid.RowDefinitions>
                <RowDefinition Height="1*"/>
                <RowDefinition Height="92*"/>
                <RowDefinition Height="1*"/>
                <RowDefinition Height="6*"/>
            </Grid.RowDefinitions>

我在没有 ScrollViewer.Horizo​​ntalScrollBarVisibility="Disabled" Horizo​​ntalContentAlignment="Stretch" 的情况下也试过了。

怎样才能达到我想要的效果?

【问题讨论】:

  • 我很确定在 中创建自定义内容将绕过 TextWrapping。也许你可以把 你的
  • 嗯。说得通。我想知道是否有办法让文本像我需要的那样在超链接中换行?
  • 虽然不完全是您的解决方案*.com/questions/140996/…
  • 以前没有遇到过这种情况,请尝试将您的 TextBlock 放在自己的 Grid 中以充当容器。您可以通过简单地在其上放置 MaxWidth 来测试 @kenny 的评论,这肯定会调用包装。更糟糕的是,您可以将宽度绑定到某些东西以做同样的事情,但仍然让调整大小的能力。

标签: wpf xaml word-wrap


【解决方案1】:
<TextBlock>
    <Hyperlink NavigateUri="http://www.microsoft.com" RequestNavigate="Hyperlink_RequestNavigate">
        <TextBlock TextWrapping="Wrap">
            Navigate To Microsoft Navigate To Microsoft Navigate To MicrosoftNavigate To MicrosoftNavigate To Microsoft
        </TextBlock>
    </Hyperlink>
</TextBlock>

【讨论】:

    【解决方案2】:

    我觉得有点傻。解决方案是去掉文本块上的 Height 属性:(

    <TextBlock Height="20" Margin="10,10,0,0" TextWrapping="Wrap">
    

    应该是

    <TextBlock Margin="10,10,0,0" TextWrapping="Wrap">
    

    它有效。

    【讨论】:

    • 这将是您不会再遇到的事情。 :)
    • @Loetn 不,如果您经常使用 xaml,那么您会再次遇到高度否定包装的事情,这很常见。
    • @ChrisW。我从来没有遇到过这种情况,我每天都在使用 XAML。也许我只是幸运。哦,好吧,以后遇到这个,我会想到这个答案。 :)
    • 这正是那种咬你一口的东西,然后当别人有问题时,你立即发现它,他们认为你是一个天才。宝贵的经验教训!
    最近更新 更多