如何将ScrollViewer/ListBox高度固定为屏幕高度?
How to fix the ScrollViewer/ListBox height to be the screen height?
我有一个通用 Windows 平台应用程序。
我有一个 ScrollViewer,它的顶部有一个按钮,一个 ListBox 和一个位于 ListBox 下方的按钮(我知道在 ScrollViewer 中有一个 ListBox 不是一个好习惯,但这不是我的代码,我无法修改执行)。
ScrollViewer的VerticalScrollMode和VerticalScrollBarVisibility都设置为false,所以不能垂直滚动(这也是一个要求)。
当ListBox包含很多项时,列表的高度会变得比设备高度大。因此列表框的一部分和列表下方的按钮不可用(因为垂直滚动被禁用)。
<ScrollViewer>
<RelativeLayout>
...
<Button name="Button1">
...
</Button>
<ListBox MinHeight="120">
</ListBox>
<Button name="Button2">
...
</Button>
</RelativeLayout>
</ScrollViewer>
有没有办法将ScrollViewer的高度固定为设备屏幕高度?并固定 ListBox 的高度,使 ListBox 的高度仅增长,以便 ListBox 适合 Button1 和 Button2 之间的 space?
您的问题不是滚动查看器的高度。它是扩展以容纳其内容的列表框(它应该如此)。通过限制列表框的高度,您可以解决这个问题。
您可以使用 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>
注意中间一行定义的高度。这意味着列表视图将占用顶部和底部行留下的所有 space。
然后把这个网格放到ScrollViewer中。
我有一个通用 Windows 平台应用程序。 我有一个 ScrollViewer,它的顶部有一个按钮,一个 ListBox 和一个位于 ListBox 下方的按钮(我知道在 ScrollViewer 中有一个 ListBox 不是一个好习惯,但这不是我的代码,我无法修改执行)。 ScrollViewer的VerticalScrollMode和VerticalScrollBarVisibility都设置为false,所以不能垂直滚动(这也是一个要求)。
当ListBox包含很多项时,列表的高度会变得比设备高度大。因此列表框的一部分和列表下方的按钮不可用(因为垂直滚动被禁用)。
<ScrollViewer>
<RelativeLayout>
...
<Button name="Button1">
...
</Button>
<ListBox MinHeight="120">
</ListBox>
<Button name="Button2">
...
</Button>
</RelativeLayout>
</ScrollViewer>
有没有办法将ScrollViewer的高度固定为设备屏幕高度?并固定 ListBox 的高度,使 ListBox 的高度仅增长,以便 ListBox 适合 Button1 和 Button2 之间的 space?
您的问题不是滚动查看器的高度。它是扩展以容纳其内容的列表框(它应该如此)。通过限制列表框的高度,您可以解决这个问题。
您可以使用 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>
注意中间一行定义的高度。这意味着列表视图将占用顶部和底部行留下的所有 space。
然后把这个网格放到ScrollViewer中。