Xamarin.Formsで順序変更リストビュー風なコントロール作りました。

本来なら動くサンプルにしてGitHubに上げろって感じですが、ちと忙しいのでソースだけ…
イメージとしては並び替えをしたいものを配列としてそれを引数にVM作成、DateTemplateをもとにそれらを表示するリストビュー風なもので好きに並び替え。並び替えたらVMにセットされるのでそれを好きなタイミングでよしなにすると。

リストビュー風といってますが、実態はRelativeLayoutです。それをScrollViewの上に置いてDateTemplateをもとに作成したViewを順序に応じてTranslateY変えることでリスト上に表示しています。
つかんだらそのViewを位置を調整しつつ掴んでるもの表示用のRelativeLayoutに移し、ドラッグ位置に応じてスクロールしつつ離したところの位置に調整して元のRelativeLayoutに戻します。

イベントの処理はAndroid側はRendererでMotionEvent使って、iOS側はXamarin.FormsのPanGestureを使ってます。この辺統一されてないのはScrollView上でイベントハンドリングするのに試行錯誤したらこんな風になったという感じです…

VM側はF#に書かれてたり、いらないnamespaceの定義があったりなどそのままだと動かないと思いますがきっとソース見てもらえればわかるはず…そのうちほかのもの合わせて動くサンプルにする予定。

とりまなんかコントロール作り方例として…(´・ω・`)

Xamarin.Forms 順序変更リストビュー風コントロール · GitHub