2012-10-02 32 views
1

如何在WPF Grid控件中使用自动行高,但将其限制为Grid不会完全滚动?WPF Grid:使用自动高度但阻止滚动

这里是我的UI:

  • 第一排:自动高度,包含一个标签和文本输入(实际上还有更多的这些行)
  • 第二行:包含灵活高度的ListView的,这取决于项目
  • 第三行数字:自动高度,包含按钮来控制上述

ListView控件列表中的项目应该是自动调整大小,所以只需要这么多的空间,它的项目行。当添加一行时,ListView的高度会增加。

ListView下面的按钮应该直接位于ListView之下,两者之间没有可变间隙。 ListView和Buttons之间的空间应该始终为6像素,以命名一个值。

随着更多项目被添加到ListView,按钮向下移动ListView的高度。当窗口不够大而不能显示全部时,按钮必须在可用空间的最底部保持可见,并且ListView应该开始滚动其内容。

因此,与短名单,是这样的:在网格中的所有行自动高度,还有很多空的空间在底部。列表很长,就像中间一行是1 * - 高度,Grid跨越整个窗口,按钮在底部可见,列表跨越剩余空间,自动滚动其内容。

我该怎么做?

我发现RowDefinition.MaxHeight财产,但不接受*高度。否则,我会的东西试过这样:

<RowDefinition Height="Auto"/> 
<RowDefinition Height="Auto" MaxHeight="*"/> 
<RowDefinition Height="Auto"/> 

回答

0

您可以设置一个固定的高度,并为了minHeight除了第二所有RowDefinitions并将在你的ListView一个ScrollViewer中。

编辑:好吧,没有scrollviewer,ListView可以滚动它的内容本身。

+0

放置ScrollViewer _around_ ListView非常丑陋,因为它会滚动列标题和整个控件边框! (至少我的逻辑说这会发生。)ListView可以滚动它的_content_本身,这是预期的行为。 – ygoe

+0

是的,当然......我忘了那个^^ –