带有 gridsplitter 的列表框会自行调整大小而不是显示滚动条

Listbox with gridsplitter resize itself instead of showing a scrollbar

在我的应用程序中,我需要在屏幕底部显示一个列表框。列表框可以不显示(通过菜单条目),并且必须可以调整高度。我将它放在一个网格中并使用 gridsplitter 来执行调整大小部分,这按预期工作。

我的问题是,如果之前没有手动调整大小,一旦日志开始出现在列表框中,这个列表框就不会显示滚动条,而是开始增长并占用更多 space。一旦我使用 gridsplitter 触发调整大小,一切都会按预期进行。我能做些什么来阻止这种情况?

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition />
        <RowDefinition Height="Auto" />
        <RowDefinition Height="Auto" />
    </Grid.RowDefinitions>

    <ContentControl Grid.Row="0"
                    Grid.Column="1" />

    <GridSplitter Grid.Row="1"
                  Height="5"
                  HorizontalAlignment="Stretch"
                  Visibility="{Binding ShowLogWindow,
                                       Converter={StaticResource Bool2Vis}}" />

    <ListBox Grid.Row="2"
             VerticalAlignment="Stretch"
             ItemsSource="{Binding Toolbox.LogEntries}"
             MinHeight="50"
             Visibility="{Binding ShowLogWindow,
                                  Converter={StaticResource Bool2Vis}}" />
</Grid>

将第三个 RowDefinition(或 ListBox 本身)的 Height 设置为 50 或您想要的任何固定高度。

Auto表示size to content,也就是说最后一行的高度会随着ListBox的增长而增长。这显然不是你想要的。