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>
Другие вопросы по тегам