3

我采用了标准的 Item GridView 模板并对其进行了一些修改以满足我的需要。实际上,我对模板代码的改动很少。

我有一个组,其中有很多项目(92 项)。listview 确实渲染了其中的一些,但它只渲染了其中的 12 个。这是为什么?如何覆盖它并使其显示所有项目?

这是我在设置 DefaultViewModel 时进入调试器的屏幕截图: 在此处输入图像描述

我像这样将项目添加到我的列表视图中(当我从服务中解析 XML 时):

DataSource.AddItem(new DataItem(... title, name, etc, DataSource.getGroup("gallery")));

然后在我的 DataSource 类中(这与示例完全相同,我只是重命名了它),我添加了这个方法:

public static void AddItem(DataItem item)
{
    item.Group.Items.Add(item);
}

这是呈现它的 XAML 的样子(它与 GridView 模板相同:

    <GridView.ItemsPanel>
                <ItemsPanelTemplate>                        
                    <VirtualizingStackPanel Orientation="Horizontal"/>
                </ItemsPanelTemplate>
            </GridView.ItemsPanel>
            <GridView.GroupStyle>
                <GroupStyle>
                    <GroupStyle.HeaderTemplate>
                        <DataTemplate>
                            <Grid Margin="1,0,0,6">
                                <Button
                                    AutomationProperties.Name="Group Title"
                                    Content="{Binding Title}"
                                    Click="Header_Click"
                                    Style="{StaticResource TextButtonStyle}"/>
                            </Grid>
                        </DataTemplate>
                    </GroupStyle.HeaderTemplate>
                    <GroupStyle.Panel>
                        <ItemsPanelTemplate>
                            <VariableSizedWrapGrid Orientation="Vertical" Margin="0,0,80,0"/>
                        </ItemsPanelTemplate>
                    </GroupStyle.Panel>
                </GroupStyle>
            </GridView.GroupStyle>
        </GridView>

我真的很感激任何帮助。

4

1 回答 1

7

网格应用程序模板将每个组中显示的项目数量限制为 12,原因如下评论中所述:

public class SampleDataGroup : SampleDataCommon
{
    ...
    public IEnumerable<SampleDataItem> TopItems
    {
        // Provides a subset of the full items collection to bind to from a GroupedItemsPage
        // for two reasons: GridView will not virtualize large items collections, and it
        // improves the user experience when browsing through groups with large numbers of
        // items.
        //
        // A maximum of 12 items are displayed because it results in filled grid columns
        // whether there are 1, 2, 3, 4, or 6 rows displayed
        get { return this._items.Take(12); }
    }
}
于 2012-06-25T07:56:40.560 回答