在XAML视图上绑定单个JSON结果

时间:2019-03-31 03:42:55

标签: c# xaml xamarin viewmodel

我在绑定单个json结果以查看时遇到麻烦。绑定到Xaml上的列表视图没有问题。谁能帮我将Json结果的各个值绑定到xaml。

我的Json结果

{
    "id": "37",
    "full_name": "Priyanka",
    "celeb_id": "37",
    "profile_pic_1": "http://192.168.1.6/yoyo/uploads/form_celebrity_assets/20190316182711-2019-03-16form_celebrity_assets182607.jpg",
    "profile_pic_2": "20190316182711-2019-03-16form_celebrity_assets182616.jpg",
    "profile_pic_3": "20190316182711-2019-03-16form_celebrity_assets182624.jpg"
}

这是我的模特

public partial class CelebrityList
{
    public string id { get; set; }
    public string full_name { get; set; }
    public string profile_pic_1 { get; set; }
    public string profile_pic_2 { get; set; }
    public string profile_pic_3 { get; set; }
    public string Likes { get; set; }
}

这是我的API调用服务

public async Task<List<CelebrityList>> GetAllLiveNowAsync(string accessToken)
    {
        accessToken = CrossSecureStorage.Current.GetValue("AccessToken");
        var client = new HttpClient();
        client.DefaultRequestHeaders.Add("X-Api-Key", "659D35BF572E789B3A0400F8C6F76D86");
        client.DefaultRequestHeaders.Add("X-Token", accessToken);

        var json = await client.GetStringAsync(Constants.BaseApiAddress + "celebrity_merge_user_with_assets/all");
        Debug.Write(json);
        var livenow = JsonConvert.DeserializeObject<List<CelebrityList>>(json);
        Debug.Write(livenow);
        return livenow;
    }

我的视图模型

private async Task GetList()
    {
        IsRefreshing = true;

        var accessToken = Settings.AccessToken;
        Livenow = await _apiServices.GetAllLiveNowAsync(accessToken);

        IsRefreshing = false;
    }

我只需要将结果绑定到xaml的不同元素上,例如将图像绑定到ffimageloading资源,将名称命名为标签等等。

我将它们全部加载为列表没有问题。

1 个答案:

答案 0 :(得分:0)

可以显示XAML文件吗?我的猜测是:您正在尝试绑定到Livenow。我假设它是一个List或IList。像这样将其更改为ObservableCollection

var listOfcelebritiesList = await _apiServices.GetAllLiveNowAsync(accessToken);
if(celebrityList!=null)
{
    Livenow = new ObservableCollection(listOfcelebritiesList);
}

确保 celebrityList 不为null或为空。如果已填充,并且您将ListView源绑定到Livenow,并将内部的单元格绑定到CelebrityList,则我认为应该这样做。