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;
}
}
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);
}
}
}