首页 > 解决方案 > 如何在设置属性之前将属性绑定到我操作的 xaml?

问题描述

我有这个方法:

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 布局。

这是我的xml:

<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>

标签: c#xamarin

解决方案


假设GetVideos() 返回 a List<Video>,这Video是您在代码中定义的类,因此您可以修改它。

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

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

推荐阅读