如何使 TextBlock 在 ListBox 中水平调整大小

How to make a TextBlock resize horizontally in a LsitBox

我有一个 window 和一个 ListBox 在模板中包含 TextBlocks:

<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 会得到一个水平滚动条。

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

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