指定HeaderTemplate时隐藏的GridView项

时间:2013-02-20 12:01:13

标签: windows-runtime winrt-xaml

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

<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提到的默认网格布局,但无法确定两个组的大小链接的原因。

1 个答案:

答案 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>

现在,如果您对此进行评论 - 您的论坛将从此更改

GridView with GroupStyle defined

到这个

GridView with GroupStyle undefined