0

我有一个像这样的网格视图:

<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 提到的默认网格布局,但无法确定为什么这两个组的大小是相关联的。

4

1 回答 1

0

嗨,亚历克斯(我相信我们以前见过)。除了 Jim 所说的(你的每个 Matches 是否代表一个具有 Name 和另一个嵌套 Matches 属性的对象?)你可能会遇到一个问题,如果你不指定GroupStyle.Panel- 你会得到一个默认值StackPanel,它可能会得到一些项目在您的分组收藏夹中。当您创建默认的“网格应用程序 (XAML)”-基于模板的应用程序时,您将获得以下组面板的定义:

<GroupStyle.Panel>
    <ItemsPanelTemplate>
        <VariableSizedWrapGrid
            Orientation="Vertical"
            Margin="0,0,80,0" />
    </ItemsPanelTemplate>
</GroupStyle.Panel>

现在,如果您将其注释掉-您的组将从此更改

定义了 GroupStyle 的 GridView

对此

未定义 GroupStyle 的 GridView

于 2013-02-21T08:57:29.627 回答