的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; }
}
视图模型:
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' 至 'EntertaimentGroup.Model.TracksSoundCloud'EntertaimentGroup C:\ Users \ HOANG-PC \ documents \ visual 工作室 2015 \ Projects \ EntertaimentGroup \ EntertaimentGroup \ ViewModel \ TrackSoundCloudViewModel.cs 22
视图模型:
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;
}
}
答案 0 :(得分:0)
exeption消息说明了一切:getItem.tracks
是List<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);
}
}
}