C# 如何在UWP上创建自定义ListView

C# 如何在UWP上创建自定义ListView,c#,xaml,uwp,win-universal-app,uwp-xaml,C#,Xaml,Uwp,Win Universal App,Uwp Xaml,我已经在C#上设置了ListView,问题是XAML。我当前的代码是这样工作的: <ListView x:Name="List" ItemsSource="{Binding}" SelectionChanged="List_SelectionChanged"> <ListView.ItemTemplate> <DataTemplate> <Grid Margin="11" Width="460">

我已经在C#上设置了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>

但我想这样做:


对于您的场景,我认为您可以使用
GridView
而不是
ListView
。在行和列中显示数据集合,而ListView显示垂直堆叠的集合

默认情况下,
GridView
使用作为其属性,当使用
ItemsWrapGrid
时,我们可以使用属性设置属性,以将最大列限制为
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>

对于您的场景,我认为您可以使用
GridView
而不是
ListView
。在行和列中显示数据集合,而ListView显示垂直堆叠的集合

默认情况下,
GridView
使用作为其属性,当使用
ItemsWrapGrid
时,我们可以使用属性设置属性,以将最大列限制为
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>


你能详细说明一下吗?前两个框应该是列表框中的一项吗?由于
Source=“{Binding Way}”
OneWay TwoWay?@KoryGill“Way”将路径绑定到我的资产文件夹,因此您的代码无法编译,每个框都是我的listview的一项,我尝试使用ListBox,但无法使用“ItemTemplate”。这个应用程序展示正是我想要的,但在这种情况下,他可能使用网格啊……这让我很反感。@KoryGill对不起?我想对于UWP,你需要可变大小的Wrapgrid。你能详细说明一下吗?前两个框应该是列表框中的一项吗?由于
Source=“{Binding Way}”
OneWay TwoWay?@KoryGill“Way”将路径绑定到我的资产文件夹,因此您的代码无法编译,每个框都是我的listview的一项,我尝试使用ListBox,但无法使用“ItemTemplate”。这个应用程序展示正是我想要的,但在这种情况下,他可能使用网格啊……这让我很反感。@KoryGill对不起?我想对于UWP,你需要可变大小的Wrapgrid。