这可能是最简单的,但我是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。所有我不知道如何迭代项目。
答案 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)
}