在Xamarin.Forms iOS中的Carousel视图

时间:2016-08-05 14:03:12

标签: c# ios json xamarin.ios xamarin.forms

我有一个网络服务,我从json字符串获取imageurl。但我想错误的绑定部分。没有显示任何图像。这是我的代码。

的Xaml:

moveTaskToBack(true)

这是我的get json服务代码;

<cv:CarouselView ItemsSource="{Binding Path=BindingContext.Hotel.HotelImages, Source={x:Reference HotelDetailPage}}" HeightRequest="200">
        <cv:CarouselView.ItemTemplate>
          <DataTemplate>
            <StackLayout HeightRequest="200">
              <Grid HeightRequest="200">
                <Image Aspect="AspectFill" Source="{Binding FullPath}"/>
              </Grid>
            </StackLayout>
          </DataTemplate>
        </cv:CarouselView.ItemTemplate>
      </cv:CarouselView>

注意:我在此示例中获得了帮助:https://blog.xamarin.com/flip-through-items-with-xamarin-forms-carouselview

1 个答案:

答案 0 :(得分:0)

您可以验证您要转换的网址是指可访问的链接吗? (我假设一个网址?) 你能给我们完整的代码吗?

只是一个建议,但我注意到您的var酒店在代码隐藏文件中写成'hotel',并在您的XAML文件中写成'Hotel'...

我写了一些关于CarouselView的SO文档,但现在的资料如下。在本文档中,您将找到一个非常简单的示例。也许有想法用您的问题和一些虚拟数据来测试它?

CarouselView - 预发布版本

导入CarouselView

导入CarouselView的最简单方法是使用Xamarin / Visual studio中的NuGet-Packages Manager: enter image description here

要使用预发行套餐,请务必启用左上角的“显示预发行套餐”复选框。

每个子项目(.iOS / .droid ./。WinPhone)都必须导入此包。

将CarouselView导入XAML页面

基础知识

在ContentPage的标题中,插入以下行:

xmlns:cv="clr-namespace:Xamarin.Forms;assembly=Xamarin.Forms.CarouselView"

在标签之间放置CarouselView:

<cv:CarouselView x:Name="DemoCarouselView">
</cv:CarouselView>

x:Name将为您的CarouselView提供一个名称,该名称可用于C#代码隐藏文件。 这是将CarouselView集成到视图中所需的基础知识。 给定的示例不会显示任何内容,因为CarouselView为空。

创建可绑定源

作为ItemSource的示例,我将使用ObservableCollection字符串。

public ObservableCollection<TechGiant> TechGiants { get; set; }

TechGiant是一个将托管Technology Giants名称的类

public class TechGiant
{
    public string Name { get; set; }

    public TechGiant(string Name)
    {
        this.Name = Name;
    }
}

在页面的InitializeComponent之后,创建并填充ObservableCollection

TechGiants = new ObservableCollection<TechGiant>();
TechGiants.Add(new TechGiant("Xamarin"));
TechGiants.Add(new TechGiant("Microsoft"));
TechGiants.Add(new TechGiant("Apple"));
TechGiants.Add(new TechGiant("Google"));

最后,将TechGiants设置为DemoCarouselView的ItemSource

DemoCarouselView.ItemsSource = TechGiants;

的DataTemplates

在XAML文件中,为CarouselView提供一个DataTemplate:

<cv:CarouselView.ItemTemplate>
</cv:CarouselView.ItemTemplate>

定义DataTemplate。在这种情况下,这将是一个标签,其中文本绑定到itemsource和绿色背景:

<DataTemplate>
    <Label Text="{Binding Name}" BackgroundColor="Green"/>
</DataTemplate>

就是这样!运行程序并查看结果!