Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Xamarin Carousel中将所有项目模板数据设置为单个视图_Xamarin_Xamarin.forms_Carousel_Itemtemplate - Fatal编程技术网

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

如何在Xamarin Carousel中将所有项目模板数据设置为单个视图,xamarin,xamarin.forms,carousel,itemtemplate,Xamarin,Xamarin.forms,Carousel,Itemtemplate,我已经尝试将itemtemplate中的所有项目制作成一个视图,如下图所示,如何通过使用Xamarin CarouselView实现这一点,我正在这样使用 carousel = new CarouselView(); carousel.BindingContext = this; carousel.ItemTemplate = itemTemplate; carousel.SetBinding(Carouse

我已经尝试将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);


做类似事情最简单的方法是使用水平方向

CollectionView可以通过将其ItemsLayout属性设置为HorizontalList在水平列表中显示其项目:

当您检查文档时,它给出了一个类似的示例

<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对象,并将水平ItemsLayoutOrientation枚举成员指定为方向属性值来完成此布局:

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

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


Freakyali,使用CarouseView是否可以实现?CarouseView首先是实验性的,所以它有多个bug,其次,使用它无法实现预期的UI,因为它一次只能显示一个项目,而CollectionView则更易于使用,一年后就可以使用了,对于这种类型的UI,是否建议使用CarouseView?XF 5修复了几个问题bugs@KronosCollectionView仍然是一个可行的解决方案。但是你可以选择你喜欢的,现在更多的是偏好问题