下拉刷新tableview

时间:2018-04-30 12:28:54

标签: mvvm xamarin.ios

我创建了一个包含来自api的值的tableview。现在我想通过拉下tableview来刷新值。

问题是它没有执行,我试着在使用过的代码上放置断点。

这是我从tableview中添加到viewdidload中的代码:

        refreshControl = new MvxUIRefreshControl();
        refreshControl.ValueChanged += refreshTable;
        TableView.AddSubview(refreshControl);

刷新无效:

   private void refreshTable(object sender, EventArgs e)
        {
            refreshControl.EndRefreshing();
            TableView.ReloadData();
         }

1 个答案:

答案 0 :(得分:4)

由于您使用的是MvxUIRefreshControl,因此您应该创建一个命令来处理此事件。

在您的ViewModel中,命令可能如下所示:

private MvxCommand refreshCommand;
public ICommand RefreshCommand
{
    get
    {
        return refreshCommand ?? (refreshCommand = new MvxCommand(ExecuteRefreshCommand));
    }
}

// Define this property to let the refresh control stop
private bool isBusy;
public bool IsBusy
{
    get { return isBusy; }
    set
    {
        isBusy = value; RaisePropertyChanged(() => IsBusy);
    }
}

async private void ExecuteRefreshCommand()
{
    IsBusy = true;
    // Do your task
    // await Task.Delay(2000);
    IsBusy = false;
}

然后在您的视图中,绑定应如下所示:

var control = new MvxUIRefreshControl();
TableView.AddSubview(control);

var set = this.CreateBindingSet<YourView, YourViewModel>();

set.Bind(control).For(s => s.IsRefreshing).To(vm => vm.IsBusy);
set.Bind(control).For(s => s.RefreshCommand).To(vm => vm.RefreshCommand);

set.Apply();
相关问题