在使用Nuget软件包CarouselView
时,我一直在与Xamarin.Forms.CarouselView
合作。我试图将图像显示为自动滑动。
XAML
<StackLayout Grid.Row="0" Grid.ColumnSpan="4">
<cv:CarouselView x:Name="MainCarouselView" Position="{Binding PositionIndex, Mode=TwoWay}">
<cv:CarouselView.ItemTemplate>
<DataTemplate>
<Image Source="{Binding .}"></Image>
</DataTemplate>
</cv:CarouselView.ItemTemplate>
</cv:CarouselView >
</StackLayout>
C#
var image = new ObservableCollection<ImageSource>
{
ImageSource.FromFile("Image1.jpg"),
ImageSource.FromFile("Image2.jpg"),
ImageSource.FromFile("Image3.jpg")
};
MainCarouselView.ItemsSource = image;
Device.StartTimer(TimeSpan.FromSeconds(2), (Func<bool>) (() =>
{
MainCarouselView.Position = (MainCarouselView.Position + 1) % image.Count;
return true;
}));
在设备或仿真器上运行应用程序后,出现此错误:
严重性代码说明项目文件行抑制状态错误CS0433类型“ CarouselView”在两个文件中都存在 'Xamarin.Forms.CarouselView,版本= 1.0.0.0,文化=中性, PublicKeyToken = null'和'Xamarin.Forms.Core,Version = 2.0.0.0, 文化=中性,PublicKeyToken =空'
我尝试删除Nuget软件包,然后尝试将CarouselView
保留为空,并且它也不包含Position
的属性。任何帮助将不胜感激。
编辑:我已经解决了使用CarouselView.FormsPlugin的问题 Xaml:
<controls:CarouselViewControl x:Name="MainCarouselView" Grid.Row="0" Grid.ColumnSpan="3" Position="{Binding PositionIndex, Mode=TwoWay}">
<controls:CarouselViewControl.ItemTemplate>
<DataTemplate>
<Image Source="{Binding .}"></Image>
</DataTemplate>
</controls:CarouselViewControl.ItemTemplate>
</controls:CarouselViewControl >
并保持cs代码不变。感谢您的帮助。
答案 0 :(得分:0)
您不应该使用Xamarin.Forms.CarouselView插件,因为它已经多年没有更新了...对于那些感兴趣的人,它应该是CarouselPage的优化后继者-您可以阅读有关詹姆斯的blog post的更多信息,由于某种原因,它已经被Xamarin.Forms团队完全废弃。
当前最好的解决方案是使用Alex的Rainman CarouselView.FormsPlugin插件,这很棒!但是,我认为目前在支持Xamarin.Forms 3.5(github issue)
方面存在一些问题。注意:根据您要实现的精确程度,您可能需要看一下Sharpnado的HorizontalListView轮播布局,我几乎可以肯定这是基于亚历克斯的包裹。
为了将来,请密切注意CollectionView,它将作为Xamarin.Forms 4.0中全新CarouselView的基础。您可以在此blog post
中详细了解(并查看预览)注意:请避免同时使用CarouselPage和Xamarin.Forms.CarouselView
CarouselPage不支持UI虚拟化。因此,如果CarouselPage包含太多子元素,则性能可能会受到影响。
答案 1 :(得分:0)
对Xamarin表单使用CarouselView控件 https://github.com/alexrainman/CarouselView
并确保您遵循以下步骤:
在您的iOS和Android项目中致电:
MainActivity.cs:
CarouselView.FormsPlugin.Android.CarouselViewRenderer.Init();
AppDelegate.cs:
CarouselView.FormsPlugin.iOS.CarouselViewRenderer.Init();
在您的XAML视图上
xmlns:cv="clr-namespace:CarouselView.FormsPlugin.Abstractions;assembly=CarouselView.FormsPlugin.Abstractions"