CarouselView Xamarin表单冲突Xamarin表单错误

时间:2019-03-04 01:46:10

标签: c# xaml xamarin xamarin.forms carousel

在使用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代码不变。感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

您不应该使用Xamarin.Forms.CarouselView插件,因为它已经多年没有更新了...对于那些感兴趣的人,它应该是CarouselPage的优化后继者-您可以阅读有关詹姆斯的blog post的更多信息,由于某种原因,它已经被Xamarin.Forms团队完全废弃。

Xamarin.Forms.CarouselView Last Updated

当前最好的解决方案是使用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"