なつねこメモ

主にプログラミング関連のメモ帳 ♪(✿╹ヮ╹)ノ 書いてあるコードは自己責任でご自由にどうぞ。記事本文の無断転載は禁止です。

Xamarin.Forms で ListView の DataTemplate を使う

Xamarin.Forms 、UI を共通化できるので便利ではあるのですが、
ところどころ、(少なくとも私にとっては)不可解な部分があるような気がします。

そのうちの一つの、 DataTemplate です。


DataTemplate には、通常 Cell をルート要素として使用します。
簡単なサンプルはこちら

C# コードでのサンプルですが、 XAML でも似たような使い方です。

では、 XAML での使い方。 公式にあるサンプルはこれ。

Cell Appearance - Xamarin

Cell の使い方についてのページですが、

<DataTemplate>
    <ViewCell>
        <StackLayout BackgroundColor="#eee"
        Orientation="Vertical">
            <!-- ... -->
        </StackLayout>
    </ViewCell>
</DataTemplate>

とありますが、これをそのまま実行すると...

System.InvalidCastException: Specified cast is not valid.

と、怒られてしまいます。しまいました。

正しい使い方は

<DataTemplate>
    <ViewCell>
        <ViewCell.View>
            <StackLayout BackgroundColor="#eee"
            Orientation="Vertical">
                <!-- ... -->
            </StackLayout>
        </ViewCell.View>
    </ViewCell>
</DataTemplate>

です。

とりあえず、30 分ほど悩んでしまったので、メモしておきます。