ListView的刷新命令不能与绑定的IRelayCommand一起使用

时间:2017-06-05 14:48:57

标签: 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 };

刷新操作绑定良好

RefreshCommand="{Binding LoadInvoicesCommand}"

但刷新指标"挂起"并没有消失,这里有什么不对?

1 个答案:

答案 0 :(得分:2)

您需要将名为IsRefreshingListView中的第二个属性绑定到ViewModel。这是一个布尔属性,负责告诉ListView刷新已经开始/完成。

ListView XAML

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

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