如何在网格中显示ListView项目

时间:2019-12-20 03:38:48

标签: c# xamarin xamarin.forms

我想在Xamarin Forms中重新创建与此画廊类似的东西。我想要一个ListView进行分组,它的项目显示在网格中。 我知道如何在ListView中对项目进行分组,但是我不知道如何在网格中显示项目。网格布局看起来与Flex Layout类似,但据我所知,Flex布局没有将项目分组的方法。如何在Xamarin中创建它?

enter image description here

1 个答案:

答案 0 :(得分:0)

您应为此使用新的CollectionView

例如代码:

        <CollectionView
            x:Name="collectionView"
            Margin="5"
            ItemSizingStrategy="MeasureAllItems"
            ItemsSource="{Binding Results}"
            SelectionMode="None">
            <CollectionView.ItemTemplate>
                <DataTemplate>
                    <Image
                        HorizontalOptions="CenterAndExpand"
                        Source="{Binding ImageSource}"
                        VerticalOptions="CenterAndExpand" />
                 </DataTemplate>
            </CollectionView.ItemTemplate>
            <CollectionView.ItemsLayout>
                <GridItemsLayout
                    HorizontalItemSpacing="10"
                    Orientation="Vertical"
                    Span="2" 
                    VerticalItemSpacing="10" />
            </CollectionView.ItemsLayout>
            <CollectionView.EmptyView>
                <StackLayout>
                    <Label
                        FontSize="Title"
                        HorizontalOptions="CenterAndExpand"
                        Text="{locale:Translate Global_No_Data_Found}"
                        VerticalOptions="CenterAndExpand" />
                </StackLayout>
            </CollectionView.EmptyView>
        </CollectionView>

在这里,ItemsLayout是定义项目外观的选项,包括网格和线性。 要根据图像添加日期部分,请使用Group标头模板,就像ListView一样。 请注意,CollectionView数据模板采用视图而非ViewCell。 使用ViewCell会抛出未指定强制类型转换的异常。

有关CollectionView的更多信息,请参见:https://docs.microsoft.com/en-us/xamarin/xamarin-forms/user-interface/collectionview/layout#vertical-grid

如有查询,请随时回来。