Как создать собственный ListView в UWP

Я уже установил свой ListView на С#, проблема в XAML. Мой текущий код работает так:

<ListView x:Name="List" ItemsSource="{Binding}" SelectionChanged="List_SelectionChanged">
    <ListView.ItemTemplate>
        <DataTemplate>
            <Grid Margin="11" Width="460">
                <StackPanel Orientation="Vertical" >
                    <Image Width="100" Height="100"
                       Source="{Binding Way}"/>
                </StackPanel>
            </Grid>
        </DataTemplate>
    </ListView.ItemTemplate>
</ListView>

Но я хочу сделать что-то вроде этого:

введите здесь описание изображения


person Community    schedule 09.03.2016    source источник
comment
Можете ли вы уточнить? Верхние 2 поля должны быть одним элементом в вашем списке? Так как ваш код не будет компилироваться из-за Source="{Binding Way}" OneWay TwoWay?   -  person Kory Gill    schedule 10.03.2016
comment
@KoryGill таким образом привязывает путь к папке с моими ресурсами, каждое поле является одним элементом моего списка, я пытался использовать ListBox, но не смог использовать ItemTemplate. Это приложение показывает, как я хочу, но в этом случае он, вероятно, использует GridRows здесь   -  person    schedule 10.03.2016
comment
Ааа... это сбило меня с толку.   -  person Kory Gill    schedule 10.03.2016
comment
@KoryGill извините?   -  person    schedule 10.03.2016
comment
Я думаю, что для UWP вам нужен VariableSizedWrapGrid.   -  person Kory Gill    schedule 10.03.2016


Ответы (1)


Для вашего сценария, я думаю, вы можете использовать GridView вместо ListView. GridView отображает коллекцию данных в строках и столбцах, а ListView отображает коллекцию, расположенную вертикально.

По умолчанию GridView использует ItemsWrapGrid как его ItemsPanel, при использовании ItemsWrapGrid мы можем установить ItemsWrapGrid.MaximumRowsOrColumns с ItemsWrapGrid.Orientation, чтобы ограничить максимальное количество столбцов до 2.

Например:

<GridView ItemsSource="{Binding}" SelectionChanged="GridView_SelectionChanged">
    <GridView.ItemTemplate>
        <DataTemplate>
            <Grid Width="460" Margin="11">
                <StackPanel Orientation="Vertical">
                    <Image Width="100" Height="100" Source="{Binding Way}" />
                </StackPanel>
            </Grid>
        </DataTemplate>
    </GridView.ItemTemplate>
    <GridView.ItemsPanel>
        <ItemsPanelTemplate>
            <ItemsWrapGrid MaximumRowsOrColumns="2" Orientation="Horizontal" />
        </ItemsPanelTemplate>
    </GridView.ItemsPanel>
</GridView>
person Jay Zuo    schedule 10.03.2016