Windows 10 UWP向けの引っ張って更新ライブラリを作ってみました。NuGetにあります。
いまなぜ車輪なのか
- ScrollViewerを使った実装は操作感が好きじゃない
- 更新中にヘッダが固定されない
- ヘッダが固定される実装は引張感がない
- UWP的にListView on ScrollViewer はあんましよくない
という理由でこれらを解決するべくやってみたものがこれ。いちおう理由としてあげたところについては解決しています。まだもうちょっと調整したほうがいいところはたくさんありますがそれはおいおい…
使い方
Githubのページにも書いてますが、XAMLでちょこっとかいて、イベントハンドラをちょこちょこっと書くといいです。ICommandは現状サポートしてません。
XAMLはこんなかんじに書きます。
<ListView xmlns:uwp="using:AmazingPullToRefresh.Controls"> <uwp:PullToRefreshAdorner.Extender> <uwp:PullToRefreshExtender RefreshRequested="PullToRefreshExtender_RefreshRequested" /> </uwp:PullToRefreshAdorner.Extender> </ListView>
そんでもってイベントハンドラをこんなかんじに。
private async void PullToRefreshExtender_RefreshRequested(object sender, RefreshRequestedEventArgs e) { var deferral = e.GetDeferral(); await Task.Delay(2500); // something deferral.Complete(); }
GetDeferral()して、Complete するまでの間ヘッダが更新中になります。WinRT的ないい感じになっていると思います。ライセンスはMITなのでそこそこ使いやすいと思います。
TODO
- ヘッダテンプレートのカスタム
- 慣性スクロールの感じをもっと良くしたい