如何在 Xamarin Carousel 中将所有项目模板数据设置为单个视图

How to set all the item template data into a single view in Xamarin Carousel

我尝试将itemtemplate中的所有项目都变成一个视图,如下图所示,如何使用Xamarin CarouselView实现这一点,我是这样使用的

        carousel = new CarouselView();
            carousel.BindingContext = this;
            carousel.ItemTemplate = itemTemplate;
            carousel.SetBinding(CarouselView.ItemsSourceProperty, new Binding(nameof(this.Items), mode: BindingMode.OneWay));
   LinearItemsLayout linearItemsLayout = new LinearItemsLayout(ItemsLayoutOrientation.Horizontal);
            linearItemsLayout.SnapPointsAlignment = SnapPointsAlignment.Start;
            linearItemsLayout.SnapPointsType = SnapPointsType.Mandatory;
           carousel.ItemsLayout = linearItemsLayout;


 this.Children.Add(carousel,0,1);

Expected UI

执行类似操作的最简单方法是使用水平 CollectionView

CollectionView 可以通过将其 ItemsLayout 属性 设置为 Horizo​​ntalList:

来在水平列表中显示其项目

当你检查文件时,它给出了一个类似的例子

<CollectionView ItemsSource="{Binding Monkeys}"
            ItemsLayout="HorizontalList">
<CollectionView.ItemTemplate>
    <DataTemplate>
        <Grid Padding="10">
            <Grid.RowDefinitions>
                <RowDefinition Height="35" />
                <RowDefinition Height="35" />
            </Grid.RowDefinitions>
            <Grid.ColumnDefinitions>
                <ColumnDefinition Width="70" />
                <ColumnDefinition Width="140" />
            </Grid.ColumnDefinitions>
            <Image Grid.RowSpan="2"
                   Source="{Binding ImageUrl}"
                   Aspect="AspectFill"
                   HeightRequest="60"
                   WidthRequest="60" />
            <Label Grid.Column="1"
                   Text="{Binding Name}"
                   FontAttributes="Bold"
                   LineBreakMode="TailTruncation" />
            <Label Grid.Row="1"
                   Grid.Column="1"
                   Text="{Binding Location}"
                   LineBreakMode="TailTruncation"
                   FontAttributes="Italic"
                   VerticalOptions="End" />
        </Grid>
    </DataTemplate>
</CollectionView.ItemTemplate>

或者,也可以通过将 ItemsLayout 属性 设置为 LinearItemsLayout 对象,将 Horizo​​ntal ItemsLayoutOrientation 枚举成员指定为 Orientation 属性 值来实现此布局:

<CollectionView ItemsSource="{Binding Monkeys}">
<CollectionView.ItemsLayout>
    <LinearItemsLayout Orientation="Horizontal" />
</CollectionView.ItemsLayout>
...
</CollectionView>

这会生成一个单行列表,随着新项目的添加,该列表会水平增长: