WPF网格:使用自动高度但阻止滚动

时间:2012-10-02 12:39:03

标签: wpf scroll autosize grid-layout

如何在WPF网格控件中使用自动行高,但是将其限制为网格不会完全滚动的程度?

这是我的用户界面:

  • 第一行:自动高度,包含标签和文本输入(实际上有更多这些行)
  • 第2行:包含灵活高度的ListView,具体取决于项目数
  • 第3行:自动高度,包含控制上面列表项的按钮

ListView应该是自动调整大小的,因此它只需要占用项目行的空间。添加行时,ListView的高度会增加。

ListView下方的按钮应直接保留在ListView下,两者之间没有可变间隙。 ListView和Buttons之间的空格应始终精确为6像素,以命名值。

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

所以使用一个简短的列表,就像这样:网格的所有行都是自动高度,底部有很多空白空间。使用长列表,就像中间行是1 * - 高,网格跨越整个窗口,按钮在底部可见,列表跨越剩余空间,自动滚动其内容。

我该怎么做?

我找到了RowDefinition.MaxHeight属性,但它不接受* height。否则我会尝试这样的事情:

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

1 个答案:

答案 0 :(得分:0)

除了秒之外,您可以为所有RowDefinition设置固定高度和minheight,并在ListView周围放置一个scrollviewer。

编辑:好的,没有滚动查看器,ListView可以单独滚动其内容。