有没有一种方法可以使用 MvvmCross 在 Xamarin Forms 中使用嵌套的 CollectionView?

Is there a way to work with nested CollectionViews in Xamarin Forms with MvvmCross?

我正在 Xamarin Forms/MvvmCross 项目中构建一个页面,我需要多个 CollectionView(至少,我是这么认为的)。 在屏幕顶部,我有一个水平的 CollectionView。在第一个视图下,我添加了一个垂直的 CollectionView。 问题:我想在页面上向下滚动,以便第一个 CollectionView 消失,第二个更明显(特别是在小屏幕上,只有第二个 CollectionView 的第一项在页面顶部可见)。 我希望第一个和第二个 CollectionView 作为一个单元在页面上滚动。一些建议会很棒!

到目前为止,我已经尝试将第二个(垂直的)CollectionView 更改为可绑定的 StackLayout,但项目不会出现,而且这种方法感觉不对。


    <ScrollView>
                <StackLayout Spacing="0">
                    <SearchBar
                        mvx:La.ng="Placeholder SearchBar"
                        Margin="0,0,0,30"
                        TextColor="{StaticResource White}"
                        CancelButtonColor="{StaticResource White}"
                        PlaceholderColor="{StaticResource White_30}"
                        BackgroundColor="{StaticResource BackgroundColor}"/>
                    <Label mvx:La.ng="Text Artists" FontFamily="FiraSans#600" FontSize="16" TextColor="#FF6C6E81" Margin="0,0,0,20"/>
                    <CollectionView
                        x:Name="MyCollectionView"
                        ItemsSource="{mvx:MvxBind FavoriteArtists}"
                        HeightRequest="250" >

                        <CollectionView.ItemsLayout>
                            <GridItemsLayout
                                Orientation="Horizontal"
                                VerticalItemSpacing="1"
                                HorizontalItemSpacing="10" />
                        </CollectionView.ItemsLayout>

                        <CollectionView.EmptyView>
                            <StackLayout>
                                <ActivityIndicator Color="DimGray" IsRunning="True" HeightRequest="50" />
                            </StackLayout>
                        </CollectionView.EmptyView>

                        <CollectionView.ItemTemplate>
                            <DataTemplate>
                                <templates:FavArtistsTemplate/>
                            </DataTemplate>
                        </CollectionView.ItemTemplate>
                    </CollectionView>

                    <Label mvx:La.ng="Text Recent" FontFamily="FiraSans#400" FontSize="14" TextColor="#FF6C6E81" Margin="0,0,0,8"/>

                    <CollectionView
                        x:Name="MyCollectionView2"
                        ItemsSource="{mvx:MvxBind RecentlyPlayedItems}">

                        <CollectionView.EmptyView>
                            <StackLayout>
                                <ActivityIndicator Color="DimGray" IsRunning="True" HeightRequest="50" />
                            </StackLayout>
                        </CollectionView.EmptyView>

                        <CollectionView.ItemTemplate>
                            <DataTemplate>
                                <templates:MediaItemTemplate/>
                            </DataTemplate>
                        </CollectionView.ItemTemplate>
                    </CollectionView>
                </StackLayout>
            </ScrollView>

我希望第一个和第二个 CollectionView 作为一个单元在页面上滚动。一些建议会很棒!

你把2个水平的CollectionViews放在ListView Header中放在GridStackLayout :)

更清楚:

您使用的是 2 个水平 CollectionViews 和 1 个 ListView(仅垂直),而不是 2 个水平 CollectionViews 和 1 个垂直 CollectionView。在ListView的Header中,你把2个水平的CollectionViews放在一个GridStackLayout中。

https://docs.microsoft.com/en-US/xamarin/xamarin-forms/user-interface/listview/customizing-list-appearance#headers-and-footers