首页 > 解决方案 > 在 xaml 视图上绑定单个 json 结果

问题描述

我无法绑定单个 json 结果以查看。在 Xaml 上绑定到 List View 没有问题。任何人都可以帮我将 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 资源的图像、名称到标签等等。

我可以毫不费力地将它们全部加载为列表。

标签: c#xamlxamarinviewmodel

解决方案


你能显示 XAML 文件吗?我的猜测是:您正在尝试绑定到Livenow. 我假设它是 List 或 IList。改成ObservableCollection这样

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

确保名人列表不为空或为空。如果它已填满并且您将 ListView 源绑定到 Livenow 并将其中的单元格绑定到 CelebrityList,那么我认为应该这样做。


推荐阅读