我有一个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的通用应用程序,所以我想知道这是一个我不知道的新行为,还是这个bug ?
为了清楚起见,这是没有DataTemplate的完整代码。为了清楚起见,我的DataTemplate显示正确,但我无法滚动,因为没有滚动条,因为listview根据项目进行拉伸,而不是限制在中间行的可用区域。
<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>
答案 0 :(得分:0)
您需要将ListView包装在ScrollView中。这将填充空白区域并添加滚动条,因为列表溢出空白区域。
答案 1 :(得分:0)
我弄明白了这个问题。这不是行为改变或错误!
正如有人提到他们试图重现问题并且无法解决问题,我决定这样做。
当我将网格和ListView直接放在MainPage上时,我无法重现它。
当我将网格和ListView放在子页面(即GridPage)上并将其加载到MainPage中包含的框架中时,我无法重现它
在我的代码中,我使用(第一次)一个SplitView,这个SplitView包含在一个有2行的网格中,愚蠢地将两行都设置为&#34; Auto&#34;当我应该为我的汉堡菜单,徽标和标题设置第一个自动,第二个应该设置为&#39; *&#39;。
第二次我将第二行更改为&#39; *&#39;,问题已排序。它与包含我最初发布问题的网格的网格页面无关。
UIImage
以下是完整代码:
NSUserDefaults
再次感谢您的反馈/帮助。非常感谢!