ListView ItemsSource=“”;{Binding TrackCollection}”;没有数据.请帮我修

本文关键字:数据 TrackCollection ItemsSource ListView Binding | 更新日期: 2023-09-27 18:21:24

Xaml:

<ListView ItemsSource="{Binding TrackCollection}">
                        <ListView.ItemTemplate>
                            <DataTemplate>
..............

Json:

    public class Track
        {
            public string urn { get; set; }
            public string uri { get; set; }
            public string permalink { get; set; }
            public string permalink_url { get; set; }
            public string title { get; set; }
            public string description { get; set; }
            public string track_type { get; set; }
            public string genre { get; set; }
            public string tag_list { get; set; }
................
         }
 public class RootObject
        {
            public List<Track> tracks { get; set; }
            public string tag { get; set; }
            public string next_href { get; set; }
        }

ViewModel:

public ObservableCollection<TracksSoundCloud> TrackCollection = new ObservableCollection<TracksSoundCloud>();
    public async Task GetTrackAsyncTask(string link)
    {
        var result = await StaticMethod.GetJsonStringTask(link);
        if(result!=null)
        {
            var getItem = JsonConvert.DeserializeObject<TracksSoundCloud.RootObject>(result);
            //TrackCollection.Add(getItem.tracks);
        }
    }

如果我使用"TrackCollection.Add(getItem.tracks);",然后使用

严重性代码描述项目文件行错误CS1503参数1:无法从转换'System.Collections.Generic.List'到'EntertainmentGroup.Model.TracksSoundCloud'EntertainmentGroup C:''Users''HOANG-PC''documents''visual演播室2015''Projects''EntertainmentGroup''IntertainmentGroup''ViewModel''TrackSoundCloudViewModel.cs 22

ViewModel:

public class StaticMethod
{
    public static async Task<string> GetJsonStringTask(string link)
    {
        HttpClient client = new HttpClient();
        HttpResponseMessage message = await client.GetAsync(link+ "&client_id=9ac2b17027e4af068adbb4f10330e1b3");
        string result = await message.Content.ReadAsStringAsync();
        return result;
    }
}

ListView ItemsSource=“”;{Binding TrackCollection}”;没有数据.请帮我修

exeption消息说明了一切:getItem.tracksList<Track>,而TrackCollection的元素类型是TrackSoundCloud

您需要将TrackCollection更改为ObservableCollection<TrackSoundCloud>,或者需要转换Track-对象TrackSoundCloud-对象。

此外,您正在尝试添加整个集合,而不是单个项目。

public ObservableCollection<Track> TrackCollection = new ObservableCollection<Track>();
public async Task GetTrackAsyncTask(string link)
{
    var result = await StaticMethod.GetJsonStringTask(link);
    if(result!=null)
    {
        var getItem = JsonConvert.DeserializeObject<TracksSoundCloud.RootObject>(result);
        foreach ( var item in getItem.tracks)
        {
            TrackCollection.Add(item);
        }
    }
}

public ObservableCollection<TracksSoundCloud> TrackCollection = new ObservableCollection<TracksSoundCloud>();
public async Task GetTrackAsyncTask(string link)
{
    var result = await StaticMethod.GetJsonStringTask(link);
    if(result!=null)
    {
        var getItem = JsonConvert.DeserializeObject<TracksSoundCloud.RootObject>(result);
        foreach ( var item in getItem.tracks)
        {
            TracksSoundCloud t = ConvertTrackToTracksSoundCloud(item);//<-- Needs to be implemented
            TrackCollection.Add(item);
        }
    }
}