如何遍历GridView中的所有项目?

时间:2013-12-16 11:21:21

标签: c# xaml gridview windows-store-apps

这可能是最简单的,但我是C#初学者,所以请耐心等待。

我有一个GridView(在XAML中),绑定了一些数据。如何在应用加载时迭代每个项目?我正在使用XAML / C#构建Win 8.1应用程序。

我的GridView:

    <GridView
        ItemsSource="{Binding Source={StaticResource groupedItemsViewSource}}"
        ItemTemplateSelector="{StaticResource MeetingTileSelector}"
        x:Name="itemGridView">
    </GridView>

我想阅读每个项目包含的内容(如图片或视频,或只是一行文本),然后相应地应用ColSpan,RowSpan,Height。所有我不知道如何迭代项目。

2 个答案:

答案 0 :(得分:2)

试试这个:

foreach (var item in itemGridView.Items)
{
//do stuff with (each) item
}

假设您希望进行此迭代时网格视图绑定到其数据源。

检查this msdn class reference以获取有关GridView的更多信息。

如果您要更改网格视图项的样式,请使用

itemGridView.ItemContainerStyle

网格视图的属性

答案 1 :(得分:2)

只需尝试这些代码即可。

        foreach (var item in groupedItemsViewSource)
        {
           var gridViewItem = (FrameworkElement)itemGridView.ContainerFromItem(item);
        }

祝你好运!

<强> [编辑] 重要 :上述代码无效。我还没有意识到 groupedItemsViewSource CollectionViewSource

从您的代码中,我猜 groupedItemsViewSource 很可能是这样定义的:

    <CollectionViewSource x:Key="groupedItemsViewSource"
                          IsSourceGrouped="True"
                          Source="{Binding SomeProperty, Source={StaticResource SomeObject}}"
                          ItemsPath="Items" />

如果是这样,那么您无法将 groupedItemsViewSource 强制转换为 CollectionViewSource 以用于实现目的。相反,只需直接回复项目:

        foreach (var item in SomeObject.SomeProperty.Items)
        {
           var gridViewItem = (FrameworkElement)itemGridView.ContainerFromItem(item);

          //here you can do something about the gridViewItem(such like iretating its children)
        }