C# Xamarin.Forms.CarouselView无法使用错误:Java.Lang.IllegalArgumentException:itemView不能为null

C# Xamarin.Forms.CarouselView无法使用错误:Java.Lang.IllegalArgumentException:itemView不能为null,c#,xaml,xamarin,C#,Xaml,Xamarin,我正在用Xamarin(Android和iOS)做一个跨平台项目。我下载了Xamarin.Forms.CarouselView,发现一个错误: Java.Lang.IllegalArgumentException:itemView不能为null 我已经尝试了很多方法来实现这一点,但是很多例子都在MVVM中,我还没有将项目转换为MVVM。我想先让CarouselView工作。我已经尝试过为CarouselView创建不同的nuget软件包,但遇到了非常奇怪的错误。这是我最接近让CarouselVi

我正在用Xamarin(Android和iOS)做一个跨平台项目。我下载了Xamarin.Forms.CarouselView,发现一个错误: Java.Lang.IllegalArgumentException:itemView不能为null

我已经尝试了很多方法来实现这一点,但是很多例子都在MVVM中,我还没有将项目转换为MVVM。我想先让CarouselView工作。我已经尝试过为CarouselView创建不同的nuget软件包,但遇到了非常奇怪的错误。这是我最接近让CarouselView工作的一次。其他软件包甚至不会因为一些奇怪的兼容性问题而编译。这也包括了预发行版(包括我尝试过的三个不同的软件包!)

Java.Lang.IllegalArgumentException:itemView不能为null

可能
Source=“{Binding uri}”
carousel.BindingContext=floraData
无法获取数据。使用的code
BindingContext
似乎有问题,您应该检查一下。建议先从Xaml中删除labels控件,然后检查CarouseView是否可以正常工作

您还可以参考aboutCarouselView。如果
FloraData
类如下:

public class FloraData
{
    public class StringData
    {
        public string uri { get; set; }
    }

    public List<StringData> uris { get; set; }

    public FloraData()
    {
        uris = new List<StringData>() { new StringData() { uri = "https://static.inaturalist.org/photos/504134/medium.jpg?1379628103" },
                                            new StringData() { uri = "https://static.inaturalist.org/photos/8784478/small.jpg?1499006293" },
                                            new StringData() { uri = "https://api.idigbio.org/v2/media/23cbb9eb2750e80848ac95b5d2919323?size=thumbnail" },
                                            new StringData() { uri = "https://api.idigbio.org/v2/media/c085496285be91ace0768eb517cc704b?size=thumbnail" },
                                            new StringData() { uri = "http://swbiodiversity.org/imglib/arizona/IND/IND-0049/IND-0049216_1491615930_tn.jpg" }};
    }
}
Xaml代码如下:

<StackLayout>
    <CarouselView x:Name="carousel" ItemsSource="{Binding uris}">
        <CarouselView.ItemTemplate>
            <DataTemplate>
                <Image
                    x:Name="PlantPicture"
                    Source="{Binding uri}"
                    HorizontalOptions="Center"
                    VerticalOptions="Center"
                    WidthRequest="150"
                    HeightRequest="150">
                </Image>
            </DataTemplate>
        </CarouselView.ItemTemplate>
    </CarouselView>
</StackLayout>

如果您注释掉
carousel.ItemsSource=uris,错误是否会消失?问题:如果注释掉carousel.ItemsSource=uris;,错误是否会消失/////答:我试着注释掉那段代码,但还是得到了同样的错误。有可能我需要使用“编辑”为问题添加更多代码。@JohnHeinz嗨,你解决了吗?我从来没有解决过这个问题。我知道我试过各种各样的东西。我已经离开了那个班。我从未得到队友的帮助。我知道我的两个队友从来没有看到过密码,即使他在这学期里大概花了50-60个小时。我比每个人都更努力,他们都因为试图让我退出这个项目而获得了更高的分数。
public class FloraData
{
    public class StringData
    {
        public string uri { get; set; }
    }

    public List<StringData> uris { get; set; }

    public FloraData()
    {
        uris = new List<StringData>() { new StringData() { uri = "https://static.inaturalist.org/photos/504134/medium.jpg?1379628103" },
                                            new StringData() { uri = "https://static.inaturalist.org/photos/8784478/small.jpg?1499006293" },
                                            new StringData() { uri = "https://api.idigbio.org/v2/media/23cbb9eb2750e80848ac95b5d2919323?size=thumbnail" },
                                            new StringData() { uri = "https://api.idigbio.org/v2/media/c085496285be91ace0768eb517cc704b?size=thumbnail" },
                                            new StringData() { uri = "http://swbiodiversity.org/imglib/arizona/IND/IND-0049/IND-0049216_1491615930_tn.jpg" }};
    }
}
FloraData floraData = new FloraData();
carousel.BindingContext = floraData;
<StackLayout>
    <CarouselView x:Name="carousel" ItemsSource="{Binding uris}">
        <CarouselView.ItemTemplate>
            <DataTemplate>
                <Image
                    x:Name="PlantPicture"
                    Source="{Binding uri}"
                    HorizontalOptions="Center"
                    VerticalOptions="Center"
                    WidthRequest="150"
                    HeightRequest="150">
                </Image>
            </DataTemplate>
        </CarouselView.ItemTemplate>
    </CarouselView>
</StackLayout>
global::Xamarin.Forms.Forms.SetFlags("Shell_Experimental", "Visual_Experimental", "CollectionView_Experimental");
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);