2013-12-16 32 views
2

這可能是最簡單的,但我是C#初學者,請耐心等待。如何迭代GridView中的所有項目?

我有一個GridView(在XAML中),有一些數據綁定。如何在應用程序加載時遍歷每個項目?我正在使用XAML/C#構建Win 8.1應用程序。

我的GridView:

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

我想讀什麼每個項目包含(如圖像或視頻,或只是一個文本行),然後相應地應用列跨度,行跨度,高度。我不知道如何迭代項目。

+0

我編輯了你的標題。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 –

回答

2

試試這個:

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

因爲當你想這樣做迭代您的網格視圖綁定到目前它的數據源。

檢查this msdn class reference欲瞭解更多關於GridView的信息。

如果你正在尋找改變你的網格視圖項目的風格,使用網格視圖

+0

@BartoszKP這是不明確的,因爲http://msdn.microsoft.com/library/windows/apps/windows.ui.xaml.controls.gridview.aspx – nestedloop

+0

@BartoszKP感謝您的建議。完成。 – nestedloop

+0

這會正確進行迭代。但'item'作爲數據項目對象返回。我需要該Gridview的Item,以便我可以分配ForeGround,RowSpan和ColSpan。我怎樣才能做到這一點? –

2

itemGridView.ItemContainerStyle 

物業只是嘗試這些代碼,它應該工作。

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

此致敬禮!

[編輯] 重要:上面的代碼將不工作。我只是沒有意識到,groupedItemsViewSourceCollectionViewSource

從你的代碼,我想groupedItemsViewSource是最有可能被定義如下:

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

如果是這樣,那麼你就不能施放groupedItemsViewSourceCollectionViewSource爲iretating purpose.Instead,只是iretate物品直接:

 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) 
     } 
+0

什麼應該是'groupedItemsViewSource'? GridView或?? –

+0

@SimonFisher您正在遍歷數據源。如果GridView在綁定和迭代時間之間進行更改會怎樣? – nestedloop

+0

不能迭代@SimonFisher給出的,它說沒有公開枚舉器! –

相關問題