2011-06-03 81 views
19

嗨,我有一个ListView绑定到集合。我将ListView的高度设置为auto,以占用区域中的所有空间。但是,我将高度设置为自动后没有滚动条。如果我给它一个高度,那么滚动条会显示出来。WPF ListView没有滚动条如果高度设置为自动

标记是很像以下

<Grid> 
    <StackPanel> 
     <Expander> 
      <DataGrid> 
     <Expander> 
      <ListView> 
+0

我有一种预感, “?任何想法”这里不是你真正的问题。 – BoltClock 2011-06-03 01:03:28

+0

里面的ListView是什么样的容器/面板? – 2011-06-03 04:43:14

回答

43

我有一个预感,你的ListView是在一个面板,允许它无限制地垂直扩大。

如果您将ListView放在StackPanel的内部,例如,ListView的高度可能会超过StackPanel的高度。 ListView增加了它的高度来显示它的所有项目,就它而言,因此没有滚动条。

但是,如果更改StackPanelGrid,其中控制自动尝试适合自己的那个区域里面,ListView会自动有滚动条时,它包含了更多的项目比它可以显示。

这可能会最简单地通过调整包含ListView的布局来解决。

+0

这正是我在这里所得到的。使用标记示例更新了帖子。 – Eatdoku 2011-06-03 15:57:59

+0

我会问:2'Expanders'是StackPanel中唯一的东西吗? 'StackPanel'是'Grid'中唯一的东西吗?你希望'ListView'只占用外部'Grid'中可用的空间吗?如果所有这些都是*是*,则可以使用'DockPanel'而不是'StackPanel'。如果带有ListView的'Expander'是最后一个孩子,它将填充剩余的区域。 – 2011-06-03 17:18:36

+0

我已经用grid替换了stackpanel,问题解决了:) – Eatdoku 2011-06-05 06:16:42

3

为什么它应该显示滚动条,如果有什么滚动?

如果您想覆盖任何默认行为,您可以在ListBox上设置ScrollViewer.VerticalScrollBarVisibility="Visible"

6

而不是设置的

Height="Auto" 

集:

Height="1*" 
+0

恩,你的意思是指'Grid'的一个或多个* Row *的'Height'属性? AFAIK中,所有提到的元素中,Grid的* Row *是唯一一个Height属性接受*符号的元素。 – Tom 2017-08-23 23:11:47