MS_XamarinForms - NetDevInfraWGinOSSConsortium/NetDevInfraWiki GitHub Wiki
-
XAML化された。
- すると、流行らなくなる気がするんですが...。
- Xamarin の Xam は XAML の XAM ではないが
(Xamarin は、先頭の T を X(Ximian の X?)に置き換えた
Tamarin の猿の名前に由来。)
-
React Native と同じアプローチ
- 共通の画面定義体から、各種プラットフォーム向けの画面を生成する。
- それぞれのプラットフォームが提供する UI パーツが使用される。
補足(2 つの Xamarin の違い): Xamarin には
大きく 2 系統あり、本ページは後者を扱っている。
Xamarin Native Xamarin.Forms UI の書き方 プラットフォームごとに個別(iOS は Storyboard、Android は AXML) XAML で 1 回書く 生成物 各 OS のネイティブ UI 各 OS のネイティブ UI(レンダラーが変換) 共有できる範囲 ロジックのみ ロジック + UI 向く場面 OS ごとに作り込みたい 画面が共通でよい業務アプリ 「共通の画面定義体から各プラットフォーム向けの画面を生成」というのが
Xamarin.Forms の核であり、
Flutter(自前描画)とは方式が異なる点は押さえておきたい。
方式 代表 ネイティブ UI 変換型 Xamarin.Forms / React Native / .NET MAUI 独自レンダラ型(自前で全部描く) Flutter 前者は「OS の見た目に馴染む」が「OS 差の吸収に苦労する」、
後者は「全 OS で同じ見た目」だが「OS 標準から浮く」という
トレードオフになる。
Xamarin.Forms の中核は カスタム レンダラーである。
-
Button(Forms の抽象コントロール)を、 - iOS では
UIButton、Android ではandroid.widget.Buttonに - レンダラーが変換する。
外観や挙動を変えたい場合は、このレンダラーを継承して差し替える。
移行メモ(最新化:Xamarin.Forms は .NET MAUI に置き換わった):
時期 出来事 2014 Xamarin.Forms 登場 2022-05 .NET MAUI が正式リリース(Xamarin.Forms の後継) 2024-05-01 Xamarin(Forms 含む)のサポートが終了 移行時に最も影響が大きいのは、上記のレンダラーが
「ハンドラー」に置き換わった点である。
Xamarin.Forms .NET MAUI 仕組み カスタム レンダラー(継承ベース) ハンドラー(インターフェイス ベース) 結合 密( ViewRenderer<TView, TNativeView>を継承)疎( PropertyMapperで個別に差し替え)性能 レンダラーの生成コストが大きい 軽い XAML・ViewModel はほぼそのまま流用できるが、
カスタム レンダラーを書いている箇所は書き直しになる。
移行コストの見積もりでは、この点を最初に確認したい。
-
Xamarin から .NET MAUI へのアップグレード
https://learn.microsoft.com/dotnet/maui/migration/ -
カスタム レンダラーからハンドラーへの移行
https://learn.microsoft.com/dotnet/maui/migration/renderer-to-handler
- インサイドXamarin > Xamarin.Formsの基本構想と仕組み
https://www.buildinsider.net/mobile/insidexamarin/14
Tags: 移行, .NET開発, Mono, UIサブシステム, WPF/Silverlight, XAML