何时在异步调用视图模型后刷新视图UI以重新加载数据

时间:2014-08-22 15:47:24

标签: ios mvvmcross messenger

在我的viewmodel中,我有一个命令,它对Web服务执行异步调用,以重新加载视图网格中的数据。一旦视图模型完成,如何在视图中通知UIViewController,以便视图控制器可以在UI上调用ReloadData? 该命令不显示新视图,只设置按视图绑定的属性。

我能想到的一个选项是不是从视图模型异步调用Web服务,并且一旦从命令自定义绑定模块的command.execute()返回,就调用reloaddata?这是正确的方法吗?也许使用信使?

谢谢 标记

1 个答案:

答案 0 :(得分:1)

您可以使用RaisePropertyChanged

在您的ViewModel中 private List<YourDataClass> _yourDataList; public List<YourDataClass> YourDataList { get { return _yourDataList; } set { _yourDataList = value; RaisePropertyChanged(() => YourDataList); } }

在视图中

private YourViewModel _yourViewModel;
public YourViewConstructor()
{
    //some your code
    _yourViewModel = this.ViewModel as YourViewModel;
    _yourViewModel.PropertyChanged += _yourViewModel_PropertyChanged;

    //some your code
}

void LoginViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
{
    if (e.PropertyName.Equals("YourDataList "))
    {
        //Refresh List
    }
}

`

如果您只想在数据列表中添加新项目,那么在添加调用

之后
RaisePropertyChanged(() => YourDataList);