Как связать свойство с моим xaml, которым я манипулирую перед установкой свойства? - PullRequest
0 голосов
/ 02 июля 2018

У меня есть этот метод:

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 в этом списке. Как я могу исправить это так, чтобы в списке идентификаторов изображений и в моем списке просмотра у меня была привязка изображений для каждой ячейки. Я использую макет 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 голосов
/ 03 июля 2018

Предположим, что GetVideos () возвращает List<Video>, а Video - это класс, который вы определили в своем коде, поэтому вы можете изменить его.

Просто добавьте свойство «только для чтения» в класс Video, которое будет возвращать URL-адрес изображения

public string PictureUrl {
  get {
    $"https://i.vimeocdn.com/video/{Picture_Id}_640x360.jpg";
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...