アイキャッチ画像

.Net MAUI – 小技や間違いやすい点まとめ

.Net MAUIで小技や間違いやすい点をまとめました。

良ければ参考にしてください。

小技

ビルドアクションにAndroidResourceが表示されない

「Platforms\Android\Resources」にXMLファイルを配置してもビルドアクションにAndroidResourceが表示されないことがあります。

その場合、TargetFrameworksの順番を変更することで修復する時があります。以下のように「net8.0-android」を先頭にしてみてください。

<TargetFrameworks>net8.0-android;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>

<!-- ターゲットAndroidフレームワークを指定している場合 -->
<TargetFrameworks>net8.0-android34.0;net8.0-ios;net8.0-maccatalyst</TargetFrameworks>

ちなみに「ターゲットAndroidフレームワーク」を指定するとTargetFrameworksの「net8.0-android」が最後に移動するため、この問題が発生します。

間違いやすい点

ListView・CollectionViewをScrollViewを囲む

ListViewCollectionViewは、表示範囲に合わせて要素を制限することで処理速度を速めています。ScrollViewで囲んでしまうと表示範囲が無限になるため、要素が制限ができなく処理速度が遅くなってしまうことがあります。

ListViewCollectionViewのスクロール機能を利用するようにしてください。

文字列配列のx:DataType属性を記載し忘れる

コンパイル済みのバインディングでは、x:DataType属性を指定することで無効なバインドでビルドエラーにすることができます。

しかし、文字列配列のバインドではビルドエラーしません。Debugビルドでは問題ありませんが、Releaseビルドで正しくバインドされないことがあります。

その場合は以下のようにx:DataType=”x:String”を指定してください。

<CollectionView ItemsSource="{Binding SampleItems}">
    <CollectionView.ItemTemplate>
        <DataTemplate x:DataType="x:String">
            <Label Text="{Binding}" />
        </DataTemplate>
    </CollectionView.ItemTemplate>
</CollectionView>

コンパイル済みのバインディングについては、以下でMicrosoftが紹介しております。良ければ参考にしてください。