ボイラーのチラシ裏

テクノロジーやフィギュア、ゲームに関すること

.NET MAUI OnPlatformを使った時のエラー

.NET MAUI x Prism.Maui x ReactivePropertyを使って、家計簿アプリを作っています。 その時に遭遇したエラーの解決に手を焼いたので、記しておこうと思います。

ゴール

※データはダミーです。

理想のアプリ画面のスクリーンショット(WinUI)

理想のアプリ画面のスクリーンショットAndroid

テキストの色と背景色に注目してください。WinUIでは黒背景に白テキストとなっており、Androidでは白背景に黒テキストとなっています。(なぜ背景色が違うかは多分PCでダークテーマを使用しているから?)テキストの色はOnPlatformで柔軟に設定することができます。こんな風に↓

<Setter Property="TextColor" Value="{OnPlatform iOS=Black, Android=Black, MacCatalyst=White, Tizen=White, WinUI=White}" />
<Setter Property="FontSize" Value="{OnPlatform iOS=15, Android=15, MacCatalyst=30, Tizen=30, WinUI=30}" />

エラーの詳細

で、どのようなエラーが起きたかというと、↓のようにコードを書いていたら

<Setter Property="TextColor" Value="{OnPlatform iOS=Black, Android=Black, WinUI=White}" />
<Setter Property="FontSize" Value="{OnPlatform iOS=15, Android=15, WinUI=30}" />

次のようにエラーが出ました。

1>Views\BalanceOfPaymentsPage.xaml(45,30): XamlC error : Position 45:30. Missing Value for Setter

当初は、これの意味がよくわからなかったのですが、原因は赤字箇所が不足していたようです。

<Setter Property="TextColor" Value="{OnPlatform iOS=Black, Android=Black, MacCatalyst=White, Tizen=White, WinUI=White}" />
<Setter Property="FontSize" Value="{OnPlatform iOS=15, Android=15, MacCatalyst=30, Tizen=30, WinUI=30}" />

どうやら発行対象のプラットフォームすべてについて、OnPlatformにて値を指定しなければならないようです。

.NET MAUIを使っている開発者の皆様、ご注意ください。