在Xamarin.CarouselView中不显示图像

时间:2019-02-23 16:16:04

标签: c# xamarin

我正在使用xamarin构建一个可从Web服务获取图像并绑定到轮播视图的应用程序。

但是我看不到显示的图像。

这是我的xaml。

<StackLayout HeightRequest="250">
                <cv:CarouselView x:Name="carouselViewImage">
                    <cv:CarouselView.ItemTemplate>
                        <DataTemplate>
                            <Image Source="{Binding base}" 
                                   VerticalOptions="Center"
                                   HeightRequest="180" WidthRequest="100"/>
                        </DataTemplate>
                    </cv:CarouselView.ItemTemplate>
                </cv:CarouselView>
            </StackLayout>

这是我的代码

ImageSources = await Task.Run(() =>
            {
                var productViewData = new ProductViewData();
                return productViewData.GetProductImages(Product.id.GetValueOrDefault());
            });

            carouselViewImage.ItemsSource = ImageSources;

我绑定的基础是ImageSource

ImageSources variable

已更新:

我尝试了另一种创建新类的方法:

class ImageTest
{
    public ImageSource Image { get; set; }
}

并使用foreach创建ImageSource的新列表

ImageSources = await Task.Run(() =>
            {
                var productViewData = new ProductViewData();
                return productViewData.GetProductImages(Product.id.GetValueOrDefault());
            });
            var testImage = new List<ImageTest>();
            //Add this foreach 
            foreach (var imageSource in ImageSources)
            {
                testImage.Add(new ImageTest { Image = imageSource });
            }


            carouselViewImage.ItemsSource = testImage;

并更改xaml

 <Image Source="{Binding Image}" VerticalOptions="Center" HeightRequest="180" WidthRequest="100"/>

就可以了。但是我不要这个=(

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

根据您的评论ItemsSourceList<ImageSource>。在这种情况下,绑定是错误的,这就是应该这样做的方式:

<Image Source="{Binding}"/>