如果高度设置为自动,WPF ListView 没有滚动条
Posted
技术标签:
【中文标题】如果高度设置为自动,WPF ListView 没有滚动条【英文标题】:WPF ListView no scrollbar if height set to auto 【发布时间】:2011-09-07 11:40:54 【问题描述】:您好,我有一个绑定到集合的 ListView。我将 ListView 的高度设置为 auto 以占用该区域中的所有空间。但是,我将高度设置为自动后没有滚动条。如果我给它一个高度,那么滚动条就会出现。
标记和下面的差不多
<Grid>
<StackPanel>
<Expander>
<DataGrid>
<Expander>
<ListView>
【问题讨论】:
我有一种预感,“有什么想法吗?”这不是您的实际问题。 里面的ListView
是什么容器/面板?
【参考方案1】:
如果没有可滚动的内容,为什么要显示滚动条?
如果您想覆盖任何默认行为,您可以在 ListBox 上设置 ScrollViewer.VerticalScrollBarVisibility="Visible"
。
【讨论】:
【参考方案2】:我有一种预感,您的ListView
位于一个面板内,允许它无限地垂直扩展。
例如,如果您将ListView
放在StackPanel
中,则ListView
的高度可能会超过StackPanel
的高度。 ListView
增加了高度以显示其所有项目,就它而言,因此没有滚动条。
但是,如果您将 StackPanel
更改为 Grid
,其中控件会自动尝试将自己放入该区域,当 ListView
包含的项目超出其显示范围时,它将自动具有滚动条。
这很可能通过调整包含ListView
的布局来解决。
【讨论】:
这正是我所拥有的。使用标记示例更新了帖子。 我会问:StackPanel
中只有 2 个 Expanders
吗? StackPanel
是 Grid
中唯一的东西吗?您是否希望ListView
只占用外部Grid
中可用的空间?如果所有这些都是是,您可以使用DockPanel
而不是StackPanel
。如果Expander
和ListView
是最后一个孩子,它将填充剩余区域。
很好的解释乔尔。帮助我解决了在 StackPanel 中放置 ListView 的类似问题。【参考方案3】:
而不是设置
<RowDefinition Height="auto"/>
设置:
<RowDefinition Height="1*"/>
【讨论】:
嗯,您的意思是指Grid
的一个或多个Row
上的Height
属性吗? AFAIK,在所有提到的元素中,Grid
的 Row
是唯一的 Height
属性接受“*”符号的元素。以上是关于如果高度设置为自动,WPF ListView 没有滚动条的主要内容,如果未能解决你的问题,请参考以下文章