同じことを何度も書きたくない,だからBindableLayout [.NET MAUI]

はじめに

ご覧いただきありがとうございます.

MAUIを使うときに,XAMLでほとんど同じものを何度も作ることがあります.何度も同じコードを書いていませんか?

今回は,MAUIで上の画像のようなフレーム中のラベルテキストだけ違うものをまとめて作る.その方法をご紹介します.

これをマスターすると,複雑なコントロールをたくさん作るのがより簡単になること間違いなしです.

紹介するもの

実物とXAML

実際のもの
XAML
<HorizontalStackLayout Margin="10" >
    <BindableLayout.ItemsSource>
        <x:Array Type="{x:Type x:String}">
            <x:String>A</x:String>
            <x:String>B</x:String>
            <x:String>C</x:String>
            <x:String>D</x:String>
            <x:String>E</x:String>
            <x:String>F</x:String>
        </x:Array>
    </BindableLayout.ItemsSource>

    <BindableLayout.ItemTemplate>
        <DataTemplate>
            <Frame BackgroundColor="#EB1D36" Margin="10" HeightRequest="100"
                       BorderColor="#EB1D36">
                <Label Text="{Binding}" WidthRequest="100" 
                           TextColor="#CFD2CF" FontSize="Medium"
                           HorizontalTextAlignment="Center"/>
            </Frame>
        </DataTemplate>
    </BindableLayout.ItemTemplate>
</HorizontalStackLayout>

今回のXAMLの説明

HorizontalStackLayoutBindableLayoutの機能を使うコードです.フレームの中にラベルがあるものをA~Fまで作っています.

<BindableLayout.ItemsSource>の配列が,<BindableLayout.ItemTemplate>の中にある{Binding}にそれぞれ代入されます.

<DataTemplate>の中身が配列分つくられて,その中の{Binding}が配列の中身になっています.

<BindableLayout.ItemsSource><BindableLayout.ItemTemplate>の中身を変えることで様々なものが作れます.さらに<BindableLayout>は他のレイアウト,例えばGridやVerticalStackLayoutでも使うことが出来ます.

まとめ

BindableLayoutを用いてUIづくりを一気に簡単にできます.ぜひ利用してください.

参考

タイトルとURLをコピーしました