You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Xamarin.Forms下拉刷新图标持续刷新无法停止问题求助

问题解决:刷新图标持续转动且应用卡顿

核心问题原因

你在MyNoteViewModel中用new关键字重新定义了IsBusy属性,覆盖了基类ViewModelBase中带属性变更通知的实现。这导致IsBusy从true变回false时,无法通知UI更新,ListView的刷新状态一直无法结束。

具体修复步骤

1. 移除ViewModel中自定义的IsBusy属性

打开MyNoteViewModel.cs,删除以下行:

public new bool IsBusy { get; private set; }

ViewModelBase(来自MvvmHelpers)已经封装了带PropertyChanged通知的IsBusy属性,直接使用即可。

2. 优化Refresh方法,确保IsBusy被正确重置

修改Refresh方法,加入try-finally块,保证无论刷新过程是否出现异常,IsBusy都会被设为false:

async Task Refresh()
{
    IsBusy = true;
    try
    {
        // 移除不必要的模拟延迟,仅作测试用
        // await Task.Delay(2000);
        Note.Clear();
        var notes = await NoteService.GetNote();
        Note.AddRange(notes);
    }
    finally
    {
        IsBusy = false;
    }
}

3. 可选优化:避免无意义的延迟

如果Task.Delay(2000)只是为了测试刷新效果,建议在生产代码中移除,它会导致不必要的等待,加重应用卡顿。

4. 确认绑定配置无误

XAML中ListView的IsRefreshing绑定配置是正确的:

IsRefreshing="{Binding IsBusy, Mode=OneWay}"

只要ViewModelBase的IsBusy属性正确触发PropertyChanged事件(MvvmHelpers的默认实现已经处理),UI就能实时感知状态变化。

额外卡顿排查

如果修复后仍有卡顿,检查以下点:

  • 确保Note模型的属性也实现了INotifyPropertyChanged,避免UI更新时的性能问题
  • 确认SQLiteAsyncConnection的操作没有阻塞主线程(当前NoteService的实现是异步的,这部分没问题)

内容的提问来源于stack exchange,提问作者PuineaGip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:33:35