【发布时间】:2013-08-11 08:33:08
【问题描述】:
我正在使用 mvvmcross(非常有趣),但在从 mvxlistview 添加和删除项目时一直遇到问题:
我的视图绑定到从网络服务器检索的项目列表,因此它在不同的线程中完成:
async void ActivateSearchInvoked ()
{
_activeSearchViewModel.IsLoading = true;
await _activeSearchViewModel.Search (SearchString);
_activeSearchViewModel.IsLoading = false;
}
Search 是一个调用 InnerSearch 的方法,这里是 View Model 中的代码
protected override Task InnerSearch ()
{
Users.Clear ();
return Task.Factory.StartNew (SearchForUsers);
}
protected virtual void SearchForUsers()
{
int requestringUserID = AppConfiguration.Instance.User.ID;
List<User> users = GetUsersFromWeb();
if(users == null)
{
return;
}
foreach (var item in users)
{
Users.Add (new UserViewModel (item));
}
RaisePropertyChanged (() => Users);
}
这似乎无法正常工作,直到屏幕被刷新(例如旋转它)我错过了什么?
谢谢
阿米特
【问题讨论】:
-
不确定。但我认为
RaisePropertyChanged需要在 UI 线程上完成,我不记得该方法是否在内部完成,但尝试自己包装它。