如何将ScrollViewer / ListBox高度修改为屏幕高度?

时间:2015-09-02 11:45:42

标签: xaml listbox windows-phone-8.1 scrollviewer uwp

我有一个通用Windows平台应用程序。 我有一个ScrollViewer,顶部有一个按钮,ListBox和ListBox下面的一个按钮(我知道在ScrollViewer中有一个ListBox不是一个好习惯,但这不是我的代码,我可以&#t; t修改实现)。 ScrollViewer的VerticalScrollMode和VerticalScrollBarVisibility都设置为false,因此无法垂直滚动(这也是一项要求)。

当ListBox包含许多项时,列表的高度将大于设备高度。因此,ListBox的一部分和列表下方的按钮不可用(因为垂直滚动被禁用)。

<ScrollViewer>
  <RelativeLayout>
    ...
    <Button name="Button1">
    ...
    </Button>
    <ListBox MinHeight="120">
    </ListBox>
    <Button name="Button2">
    ...
    </Button>
  </RelativeLayout>
</ScrollViewer>

有没有办法将ScrollViewer的高度固定为设备屏幕高度?并修复ListBox的高度,以便ListBox的高度只增加,以便ListBox适合Button1和Button2之间的空间?

1 个答案:

答案 0 :(得分:1)

您的问题不是滚动查看器的高度。列表框可以扩展以容纳它的内容(应该如此)。通过限制列表框的高度,您可以处理它。

您可以使用包含3行的网格。像这样的东西

<Grid>
   <Grid.RowDefinitions>
       <RowDefinition Height="Auto"/>
       <RowDefinition Height="*"/>
       <RowDefinition Height="Auto"/>
   </Grid.RowDefinitions>
   <Button x:Name="ButtonTop" Grid.Row=0/>
   <ListView x:Name="DontPutListViewInScrollViewer" Grid.Row=1/>
   <Button x:Name="ButtonBottom" Grid.Row=2/>
</Grid>

注意中间行中定义的高度。这意味着列表视图将占用顶部和底部行可用的所有空间。

然后将此网格放入ScrollViewer。