You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使ListBox内的TextBlock随窗口水平自适应大小并自动换行

解决方案

问题根源

你的问题本质是ListBox默认的滚动查看器允许水平方向无限延伸,内部元素的宽度计算会优先匹配内容本身的宽度,而非ListBox的可视区域宽度,因此你设置的星号比例布局无法生效,TextBlock没有宽度限制自然不会触发换行。

解决方法

你只需要给ListBox添加ScrollViewer.HorizontalScrollBarVisibility="Disabled"属性,禁用水平滚动能力即可。该设置不会影响垂直滚动的正常使用,同时会强制内部内容的宽度和ListBox可视宽度保持一致,你的1:20比例布局会自动按容器宽度计算,TextBlock超出宽度时就会自动换行。

修改后的核心代码示例:

<ListBox x:Name="AnnotationsList" 
         ScrollViewer.VerticalScrollBarVisibility="Visible" 
         ScrollViewer.HorizontalScrollBarVisibility="Disabled"
         Grid.Row="1" 
         Grid.ColumnSpan="3">
    <!-- 其余模板内容保持不变 -->
    <ListBox.ItemTemplate>
        <DataTemplate>
            <Grid>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="1*"/>
                    <ColumnDefinition Width="20*"/>
                </Grid.ColumnDefinitions>
                <Label Content="{Binding DateAdded}" Grid.Column="0"/>
                <TextBlock Text="{Binding Description}" TextWrapping="Wrap" Grid.Column="1"/>
            </Grid>
        </DataTemplate>
    </ListBox.ItemTemplate>
</ListBox>

可选优化

如果修改后发现条目内容没有完全占满ListBox的宽度,可以额外给ListBox添加条目容器样式,强制内容横向拉伸:

<ListBox.ItemContainerStyle>
    <Style TargetType="ListBoxItem">
        <Setter Property="HorizontalContentAlignment" Value="Stretch"/>
    </Style>
</ListBox.ItemContainerStyle>

内容的提问来源于stack exchange,提问作者viraptor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 18:54:04