我有一个像这样的网格视图:
<GridView ItemsSource="{Binding Source={StaticResource GroupedMatches}}"
SelectionMode="None"
ItemClick="OnItemClicked"
IsItemClickEnabled="True"
Grid.Row="4"
Grid.Column="1">
<GridView.GroupStyle>
<GroupStyle>
<GroupStyle.HeaderTemplate>
<DataTemplate>
<TextBlock Text="{Binding Name}" />
</DataTemplate>
</GroupStyle.HeaderTemplate>
</GroupStyle>
</GridView.GroupStyle>
</GridView>
GroupedMatches
是页面中的CollectionViewSource:
<CollectionViewSource x:Name="GroupedMatches"
Source="{Binding Matches}"
IsSourceGrouped="True"
ItemsPath="Matches" />
它的后备视图模型是一个具有Name和Matches属性的类,其中Matches是IEnumerable。
如果使用跨越两个组的三个项目渲染上述内容,则只渲染其中两个项目。如果我删除GridView.GroupStyle,则所有三个项目都按预期呈现。有没有人知道当标题存在时可能导致项目被淘汰的原因是什么?
编辑:跟进我发现第二组(其中项目未按预期显示)似乎其大小与第一组匹配。因此,如果第一组中有两个项目,则第二组将显示两个项目。如果第一组有三个项目,则第一组将显示三个项目,依此类推。目前我选择更改布局以更接近地反映Filip提到的默认网格布局,但无法确定两个组的大小链接的原因。
答案 0 :(得分:0)
你好Alex(我相信我们以前见过面)。除了Jim所说的(你的每个Matches代表一个带有Name的对象和另一个嵌套的Matches属性吗?)你可能会遇到一个问题,如果你没有指定GroupStyle.Panel
- 你会得到一个默认值StackPanel
可能会将您的分组集合中的某些项目剪切掉。当您创建默认的“网格应用程序(XAML)” - 基于模板的应用程序时 - 您将获得组面板的以下定义:
<GroupStyle.Panel>
<ItemsPanelTemplate>
<VariableSizedWrapGrid
Orientation="Vertical"
Margin="0,0,80,0" />
</ItemsPanelTemplate>
</GroupStyle.Panel>
现在,如果您对此进行评论 - 您的论坛将从此更改
到这个