我想从中获得像这样的模型类,这样ViewView的Listview中的threadUsers数据就会出现。
public class DealMessageThreadList
{
public List<DealMessageThread> messages { get; set; }
public List<threadUsers> threadUsers { get; set; }
}
public class DealMessageThread
{
public string author { get; set; }
public string authorId { get; set; }
public DateTime createdDate { get; set; }
public string plainContent { get; set; }
public string threadId { get; set; }
}
public partial class threadUsers
{
public string name { get; set; }
public string userid_10 { get; set; }
}
public partial class threadUsers
{
public static ObservableCollection<threadUsers> FromJson(string json) => JsonConvert.DeserializeObject<ObservableCollection<threadUsers>>(json);
}
现在我想在视图模型中反序列化线程用户,以下是ViewModel中的方法。现在我想在视图模型中反序列化线程用户,以下是ViewModel中的方法。
public async Task FetchThreadUserData()
{
using (HttpClient hc = new HttpClient())
{
try
{
IsBusy = true;
var jsonString = await hc.GetStringAsync(url);
var obj = JsonConvert.DeserializeObject<DealMessageThreadList>(jsonString);
//IEnumerable<threadUsers> lstThreadUsers;
lstThreadUsers = obj.threadUsers.Select(t => new threadUsers()
{
userid_10 = t.userid_10,
name = t.name
});
//here list is itemsourse of listview
list = lstThreadUsers;
}
finally
{
IsBusy = false;
}
}
}
如何获取数据并填充到列表视图?我想在Listview中填充threadUsers数据。我创建了IEnumerable<threadUsers> lstThreadUsers;
,但没有在列表中填充。
答案 0 :(得分:1)
我是基于两个假设来回答这个问题的:
list
是类型ObservableCollection<threadUsers>
的公共属性list
已被实例化list
绑定到一个类似<ListView ItemsSource="{Binding list}">
的ListView上基于这两个假设,您应该可以简单地按如下方式更改代码。
反序列化对象后,不要制作新的IEnumerable<treadUsers>
并将对象复制threadUsers
,而是将它们复制到ObservableCollection
中:
foreach(var user in obj.threadUsers)
list.Add(user);
由于list
是ObservableCollection
,它将自动通知它绑定到的ListView
,它已经更新。