我创建了一个包含来自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();
}
答案 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();