2016-01-14 1 views
0

У меня вопрос относительно использования вложенных коллекций в приложениях UWP с помощью XAML/C#. Предположим, у меня есть список предметов с несколькими изображениями в каждом. Мне нужно показать прокручиваемый список со всеми изображениями внутри данных элемента. До сих пор я вижу решение для создания GridView с ItemsTemplate с элементом ItemsControl внутри него. Но это швы очень медленное и не оптимизированное решение. Есть ли лучшее предложение решить это?Вложенные элементыОптимизации управления

ответ

0

Без особого контекста, я могу думать только о следующем:

  1. У вас есть большое количество данных, которые будут отображаться, но не все сразу. В этом случае вам следует использовать controls that support virtualization.
  2. Сглаживание источника данных перед его привязкой. Это может немного улучшить производительность.

Update

Вот как вы можете это сделать:

<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 с несколькими изображениями прилагается , Что касается вируализации, я делаю это в списке первого уровня, но как виртуализировать вложенные элементы управления? – Viachslau

+0

Вам не нужно виртуализировать вложенный элемент ItemsControl, поскольку они не будут реализованы в первую очередь, если они находятся за пределами видимой области. Если у вас нет большого фотоальбома. – Xiaoy312

+0

Я привел пример о том, как это можно сделать в моем ответе. – Xiaoy312