首页 > 解决方案 > 如何使文本块在 LsitBox 中水平调整大小

问题描述

我在模板中有一个ListBox包含s 的窗口:TextBlock

<Grid>
    <Grid.ColumnDefinitions>
        <ColumnDefinition Width="Auto"/>
        <ColumnDefinition/>
        <ColumnDefinition Width="Auto"/>
    </Grid.ColumnDefinitions>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition/>
    </Grid.RowDefinitions>
    
   ...
    
    <ListBox x:Name="AnnotationsList" ScrollViewer.VerticalScrollBarVisibility="Visible" 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>
</Grid>

我希望TextBlock调整大小,模板中的两个元素以 1/20 的比例一起填充宽度。

相反,它TextBlock永远不会变小并ListBox获得水平滚动条。

如果我调整窗口大小,如何保持列表垂直滚动并确保文本变窄并换行?

标签: wpflayout

解决方案


正如 Clemens 在评论中回答的那样,HorizontalScrollBarVisibility有一个 选项Disabled,它不仅影响可见性,而且实际上会触发子元素受到容器水平大小的限制。


推荐阅读