2016-01-14 154 views
0

我有一個關於在XAML/C#UWP應用嵌套集合使用的問題。 假設我有一個項目列表,每個項目都有多個圖像。 我需要顯示項目數據中所有圖像的可滾動列表。 到目前爲止,我可以看到一個解決方案來創建帶有ItemsControl模板的GridView,其中包含ItemsControl。但它接縫非常緩慢,沒有優化解決方案。 有沒有更好的建議來解決這個問題?嵌套ItemsControls優化

回答

0

沒有太多的情況下,我只能想到以下幾點:

  1. 您有大量的要顯示的數據,但並不是所有的一次。在這種情況下,您應該考慮使用controls that support virtualization
  2. 結合之前壓扁的數據源。這可能會稍微提高性能。

更新

這裏是你如何能做到這一點:

<ListViewItem ItemsSource="{Binding Posts}"> 
    <ListView.ItemsPanel> 
     <ItemsPanelTemplate> 
      <VirtualizingStackPanel /> 
     </ItemsPanelTemplate> 
    </ListView.ItemsPanel> 

    <ListView.ItemTemplate> 
     <DataTemplate> 
      <StackPanel> 
       <TextBlock Text="{Binding Title}" /> 
       <TextBlock Text="{Binding Message}" /> 

       <ScrollViewer HorizontalScrollBarVisibility="Auto"> 
        <ItemsControl ItemsSource="{Binding Photos}"> 
         <ItemsControl.ItemsPanel> 
          <ItemsPanelTemplate> 
           <VirtualizingStackPanel /> 
          </ItemsPanelTemplate> 
         </ItemsControl.ItemsPanel> 

         <ItemsControl.ItemTemplate> 
          <DataTemplate> 
           <Image Source="{Binding}" /> 
          </DataTemplate> 
         </ItemsControl.ItemTemplate> 
        </ItemsControl> 
       </ScrollViewer> 
      </StackPanel> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListViewItem> 
+0

好了,我相信我能不能壓平的數據,因爲它就像一個Facebook發佈多張圖片連接。關於virualization,我在一級列表上做它,但如何虛擬化嵌套itemscontrol? – Viachslau

+0

你並不真的需要虛擬化的嵌套'ItemsControl',因爲它們不會被擺在首位,如果他們是可見區域之外實現。除非你有一個大的相冊。 – Xiaoy312

+0

我已經包含了一個關於如何在我的答案中完成的例子。 – Xiaoy312