GridView и виртуализация Stackpanel для отображения сетки элементов
Я пытаюсь создать сетку, содержащую такие элементы, как
| 1 | 4 | 7 |
| 2 | 5 | 8 | ===> extend
| 3 | 6 | 9 |
Поскольку данные очень большие, мне нужно использовать виртуализацию пользовательского интерфейса, и в большинстве примеров я вижу VirtualizingStackPanel
Вот как я настроил свой Gridview в XAML . Проблема в том, что следующий код создает горизонтальную строку из одного элемента (что имеет смысл, учитывая, что это просто панель стека).
| 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), поэтому буду признателен за любой пример кода или ресурсы.
Спасибо
1 ответ
Я думаю, что вы делаете виртуализацию пользовательского интерфейса, реализуя свой источник данных для интерфейса ISupportIncrementalLoading
, Пытаться 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>