具有自动高度的网格行中的列表框。滚动条不起作用

Posted

技术标签:

【中文标题】具有自动高度的网格行中的列表框。滚动条不起作用【英文标题】:ListBox in Grid Row with Auto height. Scrollbar is not working 【发布时间】:2012-05-25 08:53:46 【问题描述】:

我有以下网格:

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
        <RowDefinition Height="Auto"/>
    </Grid.RowDefinitions>
    <Border Height="50" Background="Gainsboro" Grid.Row="0"/>
    <Border Background="AliceBlue" Grid.Row="1">
        <ListBox ScrollViewer.VerticalScrollBarVisibility="Auto" ItemsSource="asdasdfasdf3dfasdf"/>
    </Border>
    <Border Height="60" Background="Aquamarine" Grid.Row="3"/>
</Grid>

为什么没有启用 ListBox 的滚动查看器?最后一个边框被推出窗口。如果我将 Grid.Row 2 Height 设置为 * 星 - 它工作得很好。是否可以在自动高度网格行中使用带有滚动查看器的列表框?

【问题讨论】:

【参考方案1】:

Auto 使您的控件根据需要调整大小。因此,您的 ListBox 将自行调整大小以显示其所有内容,并且永远不会显示滚动条。

* 使您的控件采用可用大小,并且不会超出该大小。

您需要为ListBox 定义MaxHeight 属性或使用* 作为RowDefinition 中的高度。

【讨论】:

我怕你证实我的假设。星号不好,因为它使列表框的边框比必要的大。 MaxHeight 可以正常工作,但要使其填充所有可用空间,我必须在每次调整窗口大小时在代码中进行计算。我想避免这种情况,但这似乎是不可避免的;)

以上是关于具有自动高度的网格行中的列表框。滚动条不起作用的主要内容,如果未能解决你的问题,请参考以下文章

具有高度的 IE11 垂直弹性框布局:自动和溢出不起作用

ios滚动条不起作用

为啥鼠标滚动条不起作用?

AJAX 加载内容后滚动条不起作用

创建带有溢出的滚动条不起作用?

没有滚动的 iframe 自动高度不起作用