我使用 .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
如何在ViewCell / Listview项目中使用轮播?
我做了一个演示项目来说明我的问题: https://ufile.io/af24z