2013-07-24 31 views
1

我想創建包含諸如GridView和虛擬化StackPanel中顯示項目

| 1 | 4 | 7 | 
| 2 | 5 | 8 | ===> extend 
| 3 | 6 | 9 | 

由於數據是非常大的一格一格,我需要使用UI虛擬化,我看大部分什麼示例是VirtualizingStackPanel

這是我如何在XAML中設置我的Gridview。問題是,下面的代碼創建了一個單元素的水平行(這是有道理的,因爲它只是一個堆棧面板)。

| 1 | 2 | 3 | 4 | ..... 


     <GridView 
     x:Name="itemGridView" 
     AutomationProperties.AutomationId="ItemsGridView" 
     AutomationProperties.Name="Items" 
     TabIndex="1" 
     Grid.RowSpan="3" 
     Padding="116,136,116,46" 
     ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 
     ItemTemplateSelector="{StaticResource CellStyleSelector}" 
     ItemClick="ItemView_ItemClick"    
     IsItemClickEnabled="True" 
     SelectionMode="Extended" 
     SelectionChanged="ItemView_SelectionChanged" 
     IsSwipeEnabled="true"> 
     <GridView.ItemsPanel> 
      <ItemsPanelTemplate> 
       <VirtualizingStackPanel Orientation="Horizontal"/> 
      </ItemsPanelTemplate> 
     </GridView.ItemsPanel> 
    </GridView> 

如何才能讓它顯示一個使用virtualizingstackpanel水平延伸的網格?我的數據中沒有組,因此所有顯示virtualizingstackpanel的示例都顯示了這一點? 我在Windows商店應用程序開發中是全新的(大部分都在iOS和Android上),因此將不勝感激任何代碼示例或資源。

謝謝

+0

它看起來像GridView的默認ItemsPanel本身是虛擬化。所以這個問題本身是無效的。它看起來像虛擬化可能會因其他條件(如分組等)而中斷 – rydgaze

回答

1

我認爲你是通過實現數據源接口ISupportIncrementalLoading做UI虛擬化。嘗試WrapGrid,並設置MaximumRowsOrColumns

<GridView 
    x:Name="itemGridView" 
    AutomationProperties.AutomationId="ItemsGridView" 
    AutomationProperties.Name="Items" 
    TabIndex="1" 
    Grid.RowSpan="3" 
    Padding="116,136,116,46" 
    ItemsSource="{Binding Source={StaticResource itemsViewSource}}" 
    ItemTemplateSelector="{StaticResource CellStyleSelector}" 
    ItemClick="ItemView_ItemClick"    
    IsItemClickEnabled="True" 
    SelectionMode="Extended" 
    SelectionChanged="ItemView_SelectionChanged" 
    IsSwipeEnabled="true"> 
    <GridView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <WrapGrid MaximumRowsOrColumns="3" Orientation="Horizontal"/> 
     </ItemsPanelTemplate> 
    </GridView.ItemsPanel> 
</GridView> 
+0

謝謝Xyroid。我的數據源實際上是一次性檢索的(實際的XML數據不是很大,但是元素的數量可以是1000,並且元素在顯示時會做延遲加載(比如異步檢索縮略圖)。是使用virtualizingStackPanel來顯示網格 – rydgaze

+1

'VirtualizingStackPanel'不會提供UI虛擬化,請參閱這裏。[ISupportIncrementalLoading:加載數據的子集](http://blogs.msdn.com/b/devosaure/archive/ 2012/10/15/isupportincrementloading-loading-a-subsets-of-data.aspx)&[Metro:通過ISupportIncrementalLoading遞增加載GridView和ListView](http://www.silverlightplayground.org/post/2012/06/10) /Metro-Incrementally-load-GridView-and-ListView-with-ISupportIncrementalLoading.aspx) – Xyroid

+0

謝謝,讓我檢查這些鏈接! – rydgaze