首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向下拉到刷新表视图

向下拉到刷新表视图
EN

Stack Overflow用户
提问于 2018-04-30 12:28:53
回答 1查看 287关注 0票数 2

我创建了一个表视图,其中包含来自api的值。现在,我想通过下拉表视图来刷新这些值。

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

下面是我从tableview下载的视图中的代码:

代码语言:javascript
复制
        refreshControl = new MvxUIRefreshControl();
        refreshControl.ValueChanged += refreshTable;
        TableView.AddSubview(refreshControl);

可刷新的虚空:

代码语言:javascript
复制
   private void refreshTable(object sender, EventArgs e)
        {
            refreshControl.EndRefreshing();
            TableView.ReloadData();
         }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-01 14:27:37

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

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

代码语言:javascript
复制
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;
}

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

代码语言:javascript
复制
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();
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50100572

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档