У меня вопрос относительно использования вложенных коллекций в приложениях UWP с помощью XAML/C#. Предположим, у меня есть список предметов с несколькими изображениями в каждом. Мне нужно показать прокручиваемый список со всеми изображениями внутри данных элемента. До сих пор я вижу решение для создания GridView с ItemsTemplate с элементом ItemsControl внутри него. Но это швы очень медленное и не оптимизированное решение. Есть ли лучшее предложение решить это?Вложенные элементыОптимизации управления
0
A
ответ
0
Без особого контекста, я могу думать только о следующем:
- У вас есть большое количество данных, которые будут отображаться, но не все сразу. В этом случае вам следует использовать controls that support virtualization.
- Сглаживание источника данных перед его привязкой. Это может немного улучшить производительность.
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>
Ну, я полагаю, что я не могу придавить данные, как это похоже на пост Facebook с несколькими изображениями прилагается , Что касается вируализации, я делаю это в списке первого уровня, но как виртуализировать вложенные элементы управления? – Viachslau
Вам не нужно виртуализировать вложенный элемент ItemsControl, поскольку они не будут реализованы в первую очередь, если они находятся за пределами видимой области. Если у вас нет большого фотоальбома. – Xiaoy312
Я привел пример о том, как это можно сделать в моем ответе. – Xiaoy312