【发布时间】:2015-12-08 00:21:07
【问题描述】:
我有一个 XAML 页面,它按如下网格划分:
<Grid Background="Green">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
</Grid>
第一行和第三行各包含一个TextBlock,并设置为自动调整到它们的高度,ListView 包含在中间行中,它应该在该区域内拉伸。
ListView 似乎根据项目的数量而不是应该分配给中间行的可用可见区域调整大小。
这有两个副作用:
- 我无法滚动查看其他项目
- 它将第三行中的
TextBlock推出屏幕。
如果我在 ListView 上设置特定高度,它会按预期工作,但我希望我的 ListView 使用顶部和底部行之间的整个屏幕区域。
它在 IDE 中按预期显示,但没有加载数据,但我可以清楚地看到我的顶行和底行(绿色),我可以看到 ListView 在这两行之间拉伸。
我过去曾多次使用此功能,但使用的是适用于 Windows 10 的通用应用程序,所以我想知道这是我不知道的新行为还是错误?
为了清楚起见,这是没有 DataTemplate 的完整代码。为了清楚起见,我的 DataTemplate 显示正确,但我无法滚动,因为没有滚动条,因为列表视图是根据项目拉伸的,而不是被限制在中间行的可用区域。
<Grid Background="Green">
<Grid.RowDefinitions>
<RowDefinition Height="Auto"/>
<RowDefinition Height="*"/>
<RowDefinition Height="Auto"/>
</Grid.RowDefinitions>
<TextBlock Grid.Row="0" Text="Top Row" />
<ListView ItemsSource="{Binding Items}"
Grid.Row="1"
Background="Red">
<ListView.ItemTemplate>
<DataTemplate>
<Grid>
....
</Grid>
</DataTemplate>
</ListView.ItemTemplate>
</ListView>
<TextBlock Text="bottom row" Grid.Row="2"/>
</Grid>
【问题讨论】:
-
正如我尝试使用简单的 TextBlock 作为 DataTemplate,我在设备和模拟器上没有遇到问题。可以分享一个示例项目吗?
标签: c# win-universal-app