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

时间:2017-06-09 09:58:25

标签: wpf listbox grid resize gridsplitter

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

我的问题是,如果之前没有手动调整大小,一旦日志开始出现在列表框中,此列表框不会显示滚动条,而是开始增长并占用更多空间。一旦我使用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>

1 个答案:

答案 0 :(得分:2)

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

Auto表示内容大小,这意味着最后一行的高度会随着ListBox的增长而增长。这显然不是你想要的。