Forms 如何以xamarin形式反序列化viewmodel中的对象

Forms 如何以xamarin形式反序列化viewmodel中的对象,forms,xamarin,Forms,Xamarin,我有这样的模型类,我想从视图模型中线程化Listview中的用户数据 public类DealMessageThreadList { 公共列表消息{get;set;} 公共列表线程用户{get;set;} } 公共类DealMessageThread { 公共字符串作者{get;set;} 公共字符串authorId{get;set;} 公共日期时间createdDate{get;set;} 公共字符串明文内容{get;set;} 公共字符串threadId{get;set;} } 公共部分类线程

我有这样的模型类,我想从视图模型中线程化Listview中的用户数据

public类DealMessageThreadList
{
公共列表消息{get;set;}
公共列表线程用户{get;set;}
}
公共类DealMessageThread
{
公共字符串作者{get;set;}
公共字符串authorId{get;set;}
公共日期时间createdDate{get;set;}
公共字符串明文内容{get;set;}
公共字符串threadId{get;set;}
}
公共部分类线程用户
{
公共字符串名称{get;set;}
公共字符串userid_10{get;set;}
}
公共部分类线程用户
{
公共静态ObservableCollection FromJson(字符串json)=>JsonConvert.DeserializeObject(json);
}
现在我想在视图模型中反序列化threadusers,下面是ViewModel中的方法。现在我想在视图模型中反序列化threadusers,下面是ViewModel中的方法

FetchThreadUserData()公共异步任务
{
使用(HttpClient hc=new HttpClient())
{
尝试
{
IsBusy=true;
var jsonString=await hc.GetStringAsync(url);
var obj=JsonConvert.DeserializeObject(jsonString);
//IEnumerable用户;
lsthreadusers=obj.threadUsers.Select(t=>newthreadusers()
{
userid_10=t.userid_10,
name=t.name
});
//这里的列表是listview的项目来源
列表=用户;
}
最后
{
IsBusy=false;
}
}
}

如何获取数据并填充到listview?我想在Listview中填充threadUsers数据。我创建了
IEnumerableThreadUsers但它没有在列表中填充。

我是基于几个假设来回答这个问题的:

  • 变量
    列表
    是类型为
    ObservableCollection的公共属性
  • 列表
    已实例化
  • 您已将
    列表
    绑定到类似以下内容的列表视图:
有了这两个假设,您应该能够简单地如下更改代码

反序列化对象后,不要创建新的
IEnumerable
并将
threadUsers
对象复制到其中,而是将它们复制到
ObservableCollection
中:

foreach(obj.threadUsers中的变量用户)
列表。添加(用户);
由于
列表
是一个
可观察的集合
它将自动通知绑定到的
列表视图
它已更新