问题描述
我正在构建一个 Xamarin.Forms UWP 应用程序,我在其中提供了一个从页面的代码隐藏填充的 ListView
:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage ...>
<ContentPage.Content>
<ListView IsPullToRefreshEnabled="True"
ItemsSource="{Binding Items,Mode=OneWay}"
IsRefreshing="{Binding IsRefreshing,Mode=OneWay}"
RefreshCommand="{Binding RefreshCommand}"/>
</ContentPage.Content>
</ContentPage>
绑定工作正常,但问题是我不明白为什么我不能拉来刷新列表。该列表只是静态的;我只能使用鼠标滚轮或滚动条向上或向下滚动。页面的代码隐藏是这样的:
public partial class MainPage {
public MainPage() {
BindingContext = this;
Items = new ObservableCollection<string> { "Hi","Hi","Hi" };
RefreshCommand = new Command(async () => {
IsRefreshing = true;
await RefreshData();
IsRefreshing = false;
});
InitializeComponent();
}
private bool _isRefreshing = false;
public bool IsRefreshing {
get { return _isRefreshing; }
set {
_isRefreshing = value;
OnPropertyChanged(nameof(IsRefreshing));
}
}
public ObservableCollection<string> Items { get; }
public ICommand RefreshCommand { get; }
private async Task RefreshData() { /* ... */ }
}
你能帮我找出问题吗?
解决方法
PullToRefresh 未在 ListViewRender.cs 的 UWP 版本中实现。如果您在 Xamarin.Forms 源中搜索 IsPullToRefreshEnabled,您只会在 ListViewRenderer 的 iOS 和 Android 实现中找到它。
以下错误报告中对此进行了讨论,并提出了使用 RefreshView 的当前建议:
PullTORefresh is not working for the UWP platform using XamarinForms ListVIew
请尝试使用 RefreshView。谢谢!