スキップしてメイン コンテンツに移動

.NET MAUIのハンバーガーメニュー・・・使ってみるかなぁ

今までハンバーガーメニューって使って無かったのだけど、なんとなく面倒くさいイメージがあったんだけど、無茶苦茶簡単だった

ちなみにマイクロソフトのハンバーガーメニューに関しての解説はこちら
なのだけど・・・・なんか違うな・・・

もしかしてXamarinでもこんな簡単だったのか?
画面の下のタブとかShellにタブコントロール一生懸命(と言うほどでも無いかな)書いたのに・・・まさかハンバーガーメニューと一緒に書くだけとは
知らなかったわ

基本、Shellページにハンバーガーメニューもタブも設定するのだよな

MAUIのプロジェクトを作ったら、とりあえず適当にいくつかのページを作ってみる

こんな感じで、about,help,NewPage1と作ってみた
ちなみにaboutやhelpみたいな単純な単語は
「こういう名称は予約後に使われがちだからとっとと変更してね」
とコンパイラーから警告が出るけどな

 今回、「pages」というフォルダを掘ってその下にページを作ったので、
namespaceにMauiHamburgerTest.pagesとついて、その下にaboutとかの名前の付いたクラスになってる
んで、画面が変わった事がすぐにわかるようにデフォルトのラベルを適当に書き換える
これは、aboutページだけど、作ったページを全部見やすく書き換える

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MauiHamburgerTest.pages.about"
             Title="about">
    <VerticalStackLayout>
        <Label
            Text="ABOUT PAGES"
            VerticalOptions="Center"
            HorizontalOptions="Center" />
    </VerticalStackLayout>
</ContentPage>

 

そしてShell(AppShell.xaml)のページを他のページを呼び出すように書き換えるのだけど、さっき迂闊にpagesフォルダを掘ってしまったので、呼び出しやすいように
xmlns:pages="clr-namespace:MauiHamburgerTest.pages"
と言う1行追加
namespaceを呼び出しやすいようにしました

それと、
Shell.FlyoutBehavior
をDisable->Flyoutに修正
これで、ハンバーガーメニューが出てくるようになる
どんな設定値が使えるはVisual StudioのIntellisenceが教えてくれるから色々書き換えて試してみる。

<Shell
    x:Class="MauiHamburgerTest.AppShell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:MauiHamburgerTest"      
    xmlns:pages="clr-namespace:MauiHamburgerTest.pages"
    Shell.FlyoutBehavior="Flyout">

 


ハンバーガーメニューと下のタブに出したいページを
FlyoutItem
タグの間に書く。
ContentTemplate
が、開きたいxamlのページ、Titleが表示する文字・・・Routeは・・・何だろう
上に紹介したマイクロソフトのリンクだと無視されてる
ContentTemplateに設定するのはDataTempleで、MainPageならlocal、NewPage1ならpagesになってるけど、これは上のshellタグに書いてあるclr-namespaceに書いたのと同じ名前
usingと同じ使い方なのかも?

    <FlyoutItem Route="top"
                FlyoutDisplayOptions="AsMultipleItems">
        <ShellContent Route="home"
                      Title="ホーム"
                      ContentTemplate="{DataTemplate local:MainPage}"/>


        <ShellContent Route="ichi"
                      Title="一番"
                      ContentTemplate="{DataTemplate pages:NewPage1}"/>
    </FlyoutItem>

 

タブに表示しないでハンバーガーメニューの中から呼びたいだけのページは
ShellContent
に入れてしまう。最初に作られたのは邪魔なのでコメントにするか削除

    <!--<ShellContent
        Title="Home"
        ContentTemplate="{DataTemplate local:MainPage}"
        Route="MainPage" />-->

    <ShellContent
        Route="about"
        Title="About"
        ContentTemplate="{DataTemplate pages:about}"
        />

    <ShellContent
        Route="help"
        Title="Help"
        ContentTemplate="{DataTemplate pages:help}"
        />

 


ハンバーガーメニュー

ハンバーガーメニュー、開いたところ


これで出来たのがこのページだけどここまで面倒を見てくれるのかぁ
次はこれを使ってみよう

おしまい

コメント

このブログの人気の投稿

RAM DISKを使ってみた(使ったのはImDisk)

GWだし、まあちょっとラムディスクを入れてみました うちのPCはWindows11 使ったのはImDiskというRAM Disk。 まあ、この辺のインストールとかはあちこちで解説してる人がいるので適当にぐぐってくださいな で、とりあえずベンチマーク なかなかいいスピードだ で、大抵の人はブラウザのキャッシュをRAMディスクにするといいよ・・・と言うけど そもそもメインドライブがNVMeのSSDを使っている状態で、体感速度なんか上がらない(使い終わったキャッシュを再起動したら綺麗さっぱり捨て去ってくれるという利点はある)  うちで一番効果があるのは Adobe Audition というアプリ これが結構高速化する(キャッシュをちゃんとRAMディスクにしたら・・・だけど) ハイレゾ音源だと、1時間の音源が何かする度に4GBのファイルを作られてしまう なので、RAM DISKにすると、結構編集時間を短縮できる Premiere Rushも出力先をRam Diskにしておいて終わったら、SSDにコピーすると言う事をやるとかなりスピードアップになる 実はうちのPCは普段は99%のパワーで動作していて、CPUのターボブーストが掛からないようになっている 大体3.6GHz当たりで安定してるのだけど、これを100%にするとターボブースト機能がONになって一部のコアが4.5とか4.8GHzまで上がる まあ、毎回電源オプションをいじる事になるのだけどさ・・・ そうしてベンチを取ると こんな感じ とは言え、ブーストしてるからと行ってRam Diskのスピードの差を体感する事はさすがに無理 ・・・と言うかフォトショでもRAM DISKにしてよかった・・・と言うほど変わらない SSDの性能が上がってきたしもし次にPCを買い換えたらRAM DISKよりSSDの方が速いかもね  

.NET MAUI BLE(Bluetooth Low Energy)も上手く行った

2023/10/11更新 ↓こちらの記事で更新しれました。 .NET MAUI PLUGIN BLEがWindows(10/11)に対応してた Windows対応 イヤッッホォォォオオォオウ Bluetooth LE plugin for Xamarin &amp; MAUI がWindowsに対応してた~ nugetでver3.00をみんな早速ゲットだ。   ちなみにこちらはAndroid版のサンプルアプリ   GitHub...   [ブログカード風リンクタグ作成] ------------------------------------------------------------------------------ 昔、スマホとESP32の接続確認用に作ったプログラムをXamarinからMAUIに移植したら動いちゃった   まあ、ESP32からスマホへの一方通行なアプリなんだけど 面倒くさいので github に公開した 下手くそなコード書きやがってとか思われそう 「間違ってるぞこのやろう」というのを見つけたら教えてくれると嬉しいです 要素技術の調査はこれで完了かな

.NET MAUIでスプラッシュスクリーン Android12で地獄を見る

まずは起動するところから・・・・  スプラッシュスクリーンだぬ マイクロソフトのサイト 見てると簡単そう(実際簡単で細かい事を気にしなければsvgファイルを用意して1行だけ書き換えておしまい)   なんかプロジェクトファイルに自動で記述されるらしい よし、プロジェクト作った                     つーか、もうスプラッシュがあるんだけど・・・・ そして自作のsvgファイル くうっ・・・デザインセンスない・・・・   それはともかく、このSVGファイルを Resources\Images にドラッグ&ドラッグ プロジェクトを右クリックして「プロジェクトファイルの編集」 して、編集できるようになったプロジェクトファイルを 自分のプロジェクトファイルに書き換える <MauiSplashScreen Include="Resources\Splash\splash.svg" Color="#512BD4" BaseSize="168,168" /> ↓ <MauiSplashScreen Include="Resources\Splash\ splashtestmaui .svg" Color="#512BD4" BaseSize="168,168" />   とりあえずAndroidで実行 お、おう・・・・ まあ最初はこんなもんよね 最初に紹介したマイクロソフトのサイトでもBaseSizeを書き換えてくださいって言ってるし 言われたとおりに <MauiSplashScreen Include="Resources\Splash\splashtestmaui.svg" Color="#512BD4" BaseSize=" 320,600 " /> 書き換えてみると いい感じじゃーん じゃあアンドロイドのバージョン毎に試してみよう   Android 7 Android 11 Android 12 Android 13