如何在设置属性之前将属性绑定到我操纵的xaml?

时间:2018-07-02 19:27:29

标签: c# xamarin

我有这种方法:

private async Task DisplayVideos(string query)
        {
            var videoObj = await _mediaService.GetVideos(query);
            Videos = videoObj.Hits;
            var size = "640x360";
            var picIdList = videoObj.Hits.Select(x=>x.Picture_id).ToList();

            foreach (var pic in picIdList)
            {
                PictureId = $"https://i.vimeocdn.com/video/{pic}_{size}.jpg";
            }
        }

此方法命中api端点并获取视频对象。我想从视频对象中获取picture_id并手动设置大小,然后将参数输入到特定的url中,然后像上面一样,将我在xaml中的图像的绑定上下文设置为该特定的url。

但是,以上问题是我将PictureId设置为该列表中的最后一个URL。我该如何解决它,以便获得图片ID列表,并且在列表视图中,每个单元格都有一个图像绑定。我正在使用FlowListView布局。

这是我的xaml:

<flv:FlowListView FlowColumnCount="2" SeparatorVisibility="None" HasUnevenRows="true"
            FlowItemTappedCommand="{Binding ItemTappedCommand}" 
            FlowItemsSource="{Binding Videos}" >

        <flv:FlowListView.FlowColumnTemplate>
            <DataTemplate>
                <Image Aspect="AspectFill" HeightRequest="200" Source="{Binding PictureId}" />
            </DataTemplate>
        </flv:FlowListView.FlowColumnTemplate>

    </flv:FlowListView>

1 个答案:

答案 0 :(得分:0)

我们假设GetVideos()返回一个List<Video>,并且Video是您在代码中定义的一个类,因此可以对其进行修改。

只需向Video类添加一个只读属性,该属性将返回图像的网址

public string PictureUrl {
  get {
    $"https://i.vimeocdn.com/video/{Picture_Id}_640x360.jpg";
  }
}