放浪軍師の Xamarin.Forms によるアプリ開発。
今回は Xamarin.Forms.WPF の ListView コントロールの挙動についてになります。
なんか Xamarin.Forms.WPF の ListView がおかしい
前回から紹介しているように、現在 Windows7 でも動かしたいという要望のもと、乱ちゃんProject の WPF 化を進めております。その際、どうも ListView の挙動が他と違うという事がわかり、現在発覚した範囲で紹介したいと思います。まぁ Xamarin.Forms.WPF は歴史も浅いですし、これから修正されていくのかもしれませんので今のところはこんなだねって事で参考になればと思います。
環境
Visual Studio 2017 Community
Xamarin.Forms 3.4.0.1009999
Xamarin.Forms.Platform.WPF 3.4.0.1009999
ImageCell でフリーズ
ImageCell に画像を指定すると何故かフリーズします。単純に Image コントロールを使った場合はフリーズしたりしないので、 ImageView そのものが原因だと思います。ちなみに乱ちゃんではこの ImageCell をメニュー画面に使っていたため ViewCell に Image を配置する事で対応しました。この場合はフリーズしません。
ViewCell に設置した Button の幅の取り方が違う
Twitter にも投稿しましたが、こんな感じで ViewCell に Button を配置したら WPF では ViewCell 内で広がらずに幅の狭い Button になってしまいました。
(※左画面:WPF 右画面:UWP)
おおっと…Xamarin.FormsでListViewのViewCell内にButton配置するとUWPに比べてWPFが狭っ!こりゃいかん。 pic.twitter.com/iimq9FyYDF
— ✵放浪軍師✵ (@roamschemer) 2019年1月22日
この後、spacekey @dlspacekey さんや 田淵 義人@エクセルソフト @ytabuchi さんとやり取りさせていただいたのですが、やはり WPF だけ挙動が違うようだという結論に。具体的に説明すればこんな感じになります。
UWP の場合
こんな感じになります。ウィンドウ幅いっぱいに広がって、幅を変更したら追従します。こうなって欲しいんです。
WPF で ListView のみを配置して ViewCell に Button を配置した場合
このように Button が狭いという事はないけれどウィンドウの幅を変更した際に追従しません。
ListView.Header ListView.Footer
WPF では悲しい事に一切表示されません…。仕方ないので ListView 外に Label で再現しようかなぁとか考えています。
まとめ
とりあえず今のところはこのぐらいです。もっと使っていれば色々と発見があるかもしれませんね。
Xamarin.Forms.WPF の情報が全く落ちてないのが辛い所ですが、まぁ落ちてないなら発信するチャンス!!!との気持ちで頑張ろうと思います。