编辑#2:
这是我为重现问题而创建的最低Github Repo。
我相信当某些组为空时,这是在实现分组ListViewBase虚拟化的一个错误
我有一个listview,其项目面板设置为StackPanel,因为我需要将组样式面板设置为交错的面板,这不适用于项目堆栈面板。
现在的问题是,在27个组中,仅显示16个组。我在另一个列表视图上对其进行了测试,并确认了问题在于堆栈面板仅显示了数量有限的子项(奇怪的是,在我的测试中,它不是16个,而是22个)。
我尝试过VirtualizingStackPanel,但与StackPanel不同,尽管设置了它的所有子项,但我似乎无法在设置其MaxWidth后将其居中显示在列表视图中。
这是我的XAML:
<ListView ItemsSource="{Binding Source={StaticResource NoteViewSource}}"
Padding="0 0"
ItemTemplate="{StaticResource NormalNoteTemplate}"
x:Name="ListView"
IsItemClickEnabled="True"
ItemClick="ListView_OnItemClick"
SelectionChanged="ListView_OnSelectionChanged"
SelectionMode="Extended">
<ListView.Footer>
<Border Height="80" />
</ListView.Footer>
<ListView.GroupStyle>
<GroupStyle HidesIfEmpty="False">
<GroupStyle.HeaderTemplate>
<DataTemplate x:DataType="viewModels:NoteList">
<TextBlock Text="{x:Bind Header, Mode=OneWay}"
FontSize="18"
Margin="0,16,0,8"
FontWeight="Bold" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
<GroupStyle.Panel>
<ItemsPanelTemplate>
<uwp:SGStaggeredPanel DesiredColumnWidth="220"/>
</ItemsPanelTemplate>
</GroupStyle.Panel>
</GroupStyle>
</ListView.GroupStyle>
<ListView.ItemsPanel>
<ItemsPanelTemplate>
<!-- custom group panel won't work if this is item panel-->
<StackPanel />
</ItemsPanelTemplate>
</ListView.ItemsPanel>
</ListView>
编辑:
我进一步检查了它,似乎StackPanel并不是问题,因为它的子代数为22。这意味着它的子代数不正确,这意味着问题出在CollectionViewSource或ListView中,仅传递了22个项目。 StackPanel,而不是全部计数。
但是我不明白的是为什么VirtualizingStackPanel可以工作?
答案 0 :(得分:1)
考虑使用ItemsStackPanel而不是使用StackPanel。它旨在与团体合作。
<ItemsPanelTemplate>
<ItemsStackPanel />
</ItemsPanelTemplate>
来自Microsoft docs: