Xamarin Forms 3.0が正式リリースになったのでアップデート。今更だが,Xamarin FormsはC#でWindowsストア,Android,iOS,Macの開発ができる共通フレームワークで,共通フレームワークで足りないところはネイティブの機能を使えるのが特徴。ウェザタイではこれを使ってマルチプラットフォーム版を作っている。
Microsoftはいつもバージョン3.0で一気によくなるジンクス通り,3.0でようやく実用的になった感じがある。詳しい変更点はMicrosoft Buildの動画参照だが,ウェザタイにとって嬉しい箇所を紹介。
パフォーマンス
すごく早くなったわけじゃないんだけど,リストビューとかボタンとか,表示の途中経過が見えていたのが目立たなくなった。途中経過が見えるとパフォーマンスが悪く見えるので,これは良い感じ。
Visual State Manager
WPFにあってXamarinになかったものとしてVisual State Managerがある。例えば横画面と縦画面でUIを動的に切り替えたりするときに使う。どうしても必要だったので自作していたのだが,デフォルトで用意された。
WPF
一番大きいのがこれ。これまでXamarinのWindows版はUWP,つまりWindows 10のストアのみに対応。なので,マルチプラットフォーム版ウェザタイはWindows 7では動かない,はずだった。でもWPFに対応したことでWindows 7と同じものが動くようになる。
とはいえリリースされたばかりなのでいろいろおかしなところがある。一番困ったのがList Viewのアイテムを選択したままアイテムを削除するとNotImplementedExceptionが発生する。どうしようもないので,アイテムを削除する前に,CustomRendererからWPFネイティブの「ListView.SelectedIndex = -1」を実行することに。まあこんな感じでやろうと思えばネイティブ機能を使えるところが良い点ではある。