Xamarin.FormsのShellの項目の見た目を変更する
Shellを使うと最近のモバイルアプリケーションでよく使われている,ドロワーメニューというのでしょうか,画面端からにゅっと出てくるメニューを簡単に用意できます.
Xamarin.FormsではこれをFlyoutと呼びますが,これについて詳しくは以下の公式ドキュメントを御覧ください.
さて,これから書く内容はもちろん上記の公式ドキュメントにも書いてあることですが,自分なりのメモとして自分でも書きます.
このFlyoutに表示される項目は,例えば以下のようにFlyoutItem
要素で記述します.
<FlyoutItem Title="About" Icon="icon_about.png"> <ShellContent Route="AboutPage" ContentTemplate="{DataTemplate local:AboutPage}" /> </FlyoutItem> <FlyoutItem Title="Browse" Icon="icon_feed.png"> <ShellContent Route="ItemsPage" ContentTemplate="{DataTemplate local:ItemsPage}" /> </FlyoutItem>
この記述が冒頭のスクリーンショットのように,
[アイコン] [タイトル]
の並びで表示されます.
さて,この各項目の見た目を変更したいときがあります.
その場合は,項目の見た目を定義するテンプレートを用意します.
それがShell.ItemTemplate
です.以下のようにDataTemplate
の中にどのように表示させるかを記述するだけですが,FlyoutItem
要素のTitle
とIcon
プロパティをバインディングして使うことができます.
(Icon
はFlyoutIcon
と指定しても良い)
<Shell.ItemTemplate> <DataTemplate> <StackLayout Orientation="Horizontal"> <Label Text="{Binding Title}"/> <Image Source="{Binding Icon}"/> </StackLayout> </DataTemplate> </Shell.ItemTemplate>
StackLayoutで横並びにタイトル,アイコンを表示するだけの雑な指定ですが,これをShell
要素の中に配置すると,Flyoutの表示は以下のようになります.
ひどいですね.
とはいえ,このようにFlyoutItemの表示を自分の好きなように変更できます.