【问题标题】:Handling listview’s IsRefreshing when concurrent tasks are executed并发任务执行时处理listview的IsRefreshing
【发布时间】:2016-08-14 23:54:40
【问题描述】:

我有一个支持下拉刷新的列表视图,它的 IsRefreshing 绑定到视图模型的 IsBusy 属性。 IsBusy 在命令启动时更改为 true,在命令结束或失败时设置为 false。问题是当用户执行命令两次或更多次时。当第一个任务完成时,它将 IsBusy 设置为 false,使列表视图的活动指示器不可见。但是,第二个任务仍在运行。在所有任务完成之前,我不想将 IsBusy 设置为 false。我怎样才能做到这一点?

编辑:

UI 具有如上所示的分段控件,每个控件都调用命令。

【问题讨论】:

  • if (IsBusy) return; ?

标签: xamarin xamarin.forms


【解决方案1】:

正如@Gerald 所说,在视图模型中的命令中,在将IsBusy 设置为true 之前,先检查它是否为true。如果不设置为true,否则返回

private void DoCommand()
{
 If (IsBusy) return; 
 IsBusy = true; 
  // rest of you code here 
  // IsBusy = false; 
}

【讨论】:

  • 问题是 UI,有分段控件,每个都调用命令。因此,如果用户按下控件 2 并且 IsBusy 为真,则选择控件 2 但列表视图显示不同的数据。
  • 添加了 UI 截图
  • 我认为当您拉到 referesh 时会调用该命令。你能根据你的用户界面解释一下吗?
  • 当任何一个分段控件被点击或列表视图被拉出刷新时调用该命令。 Listview 已将 IsRefreshing 绑定到 IsBusy。因此,当按下分段控件时,它也会调用命令并将 IsBusy 设置为 true。
  • 所以你拉列表刷新它,当你点击元素时你也刷新列表?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-07-18
  • 2021-04-08
  • 1970-01-01
  • 2018-04-19
  • 2018-10-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多