Xamarin.Forms如何在ViewCell中显示轮播

时间:2018-03-21 15:57:52

标签: listview xamarin xamarin.forms carousel .net-standard

我使用 .NetStandard 开发一个Xamarin.Forms 作为代码共享技术。

我有一个Listview。每个项目都应该有一个基于该项目属性的模板。有关详细信息,请参阅我的previous problem问题。

当该项目具有值幻灯片显示的属性时,我尝试将listview项目显示为轮播。我已经创建了一个DataTemplateSelector,根据属性显示正确的DataTemplate。

我已经设法通过“Alex Rainman”Nuget包使用“CarouselView.FormsPlugin”在列表之外制作旋转木马。

我使用了这个软件包因为official Xamarin nuget软件包不支持.Net标准代码共享技术,看起来它暂时没有更新。

Xaml:

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:local="clr-namespace:problem"
             xmlns:cv="clr-namespace:CarouselView.FormsPlugin.Abstractions;assembly=CarouselView.FormsPlugin.Abstractions"
             x:Class="problem.MainPage"
             Title="Demo Carrousel"
             x:Name="MainPage">


    <StackLayout>
        <!--// Version 1: Just on the page  WORKS-->
        <cv:CarouselViewControl  Orientation="Horizontal" 
                                 ItemsSource="{Binding CarrouselItems}" 
                                 ShowArrows="true"
                                 ShowIndicators="true"
                                 HorizontalOptions="Center"  
                                 HeightRequest="250"
                               />


        <!--// Version 2: In a Viewcell of  WON'T WORK-->
        <ListView ItemsSource="{Binding LstItems}" SeparatorVisibility="Default" SeparatorColor="Silver" HasUnevenRows="True">
            <ListView.ItemTemplate>
                <DataTemplate>
                    <ViewCell>
                        <StackLayout>
                            <Label Text="Carrousel in Viewcell" />

                            <cv:CarouselViewControl  Orientation="Horizontal" 
                                 BindingContext="{x:Reference Name=MainPage}"                    
                                 ItemsSource="{Binding CarrouselItems}" 
                                 ShowArrows="true"
                                 ShowIndicators="true"
                                 HorizontalOptions="Center"  
                                 HeightRequest="250"
                               />
                        </StackLayout>
                    </ViewCell>
                </DataTemplate>
            </ListView.ItemTemplate>
        </ListView>
    </StackLayout>



</ContentPage>

但是当我尝试将其包装在Listview项的dataTemplate内的<ViewCell>标记中时,应用程序在 App.g.cs 中崩溃:

#if DEBUG && !DISABLE_XAML_GENERATED_BREAK_ON_UNHANDLED_EXCEPTION
            UnhandledException += (sender, e) =>
            {
                if (global::System.Diagnostics.Debugger.IsAttached) global::System.Diagnostics.Debugger.Break();
            };
#endif

如此图所示: enter image description here

如何在ViewCell / Listview项目中使用轮播?

我做了一个演示项目来说明我的问题: https://ufile.io/af24z

0 个答案:

没有答案