我正在使用mvvmcross(非常有趣)但是我一直在添加和删除mvxlistview中的项目时遇到问题:
我的视图绑定到从Web服务器检索的项目列表,因此它在不同的线程中完成:
async void ActivateSearchInvoked ()
{
_activeSearchViewModel.IsLoading = true;
await _activeSearchViewModel.Search (SearchString);
_activeSearchViewModel.IsLoading = false;
}
搜索是一种调用InnerSearch的方法,这是视图模型中的代码
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);
}
直到刷新屏幕(例如旋转屏幕),这似乎无法正常工作我错过了什么吗?
由于
阿米特
答案 0 :(得分:3)
除非您实际使用其他源列表或INotifyCollectionChanged支持集合,否则MvxAdapter将收到您的更改通知 - 但实际上并不知道它有任何工作要做。
为了解决这个问题,请:
if (_itemsSource == value) return;
中覆盖SeItemsSource