xamarin - ListView 的刷新命令不适用于绑定(bind)的 IRelayCommand

标签 xamarin mvvm xamarin.forms exrin

我创建了一个带有 listview 和 ISingleOperation 的表单来刷新数据。

然后我在 ViewModel 中创建了命令。

 public IRelayCommand LoadInvoicesCommand
    {
        get
        {
            return GetCommand(() => Execution.ViewModelExecute(new LoadInvoicesOperation(_model), 10000));
        }
    }

ISingleOperation 运行良好并返回
new Result() { ResultAction = ResultType.None };

刷新操作绑定(bind)好
RefreshCommand="{Binding LoadInvoicesCommand}"

但是刷新指示器“挂起”并没有消失,这里有什么问题?

最佳答案

您需要从 ListView 绑定(bind)第二个属性命名为 IsRefreshing到您的 ViewModel。这是一个 bool 属性,负责告诉 ListView刷新已经开始/完成。

ListView XAML 的示例

<ListView 
    VerticalOptions="FillAndExpand"
    IsPullToRefreshEnabled="true"
    RefreshCommand="{Binding LoadInvoicesCommand}"
    IsRefreshing="{Binding IsRefreshing, Mode=OneWay}"
    ItemsSource="{Binding YourItemSource}"
    ItemTemplate="{StaticResource ItemTemplate" />

您的 ViewModel 需要一个名为 IsRefreshing 的公共(public)属性。您需要将其设置为 false当您完成刷新命令时。

关于xamarin - ListView 的刷新命令不适用于绑定(bind)的 IRelayCommand,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44371616/

相关文章:

android apk 上传不工作,因为名称无效

xamarin.forms - Xamarin Forms Shell TitleView 不居中图像

Xamarin:发生地理定位错误:未经授权

c# - 如何创建基于 BindableProperty 变化的 FadeTo() 动画,MVVM 风格?

c# - 当按钮逻辑失败时在 Storyboard中停止 segue

c# - TreeView中的分层数据。在树中查找节点

android - 无法创建 ViewModel 类的实例(无法启动 Activity ComponentInfo)

c# - 用于跨平台 Xamarin Forms 的用户控件

c - 如何获取viewCell中按钮的id

android - 使用 MVVM android 进行导航