첨부 실행 코드는 나눔고딕코딩 폰트를 사용합니다.
728x90
반응형
728x170

TestProject.zip
0.16MB

▶ AppShell.xaml

<?xml version="1.0" encoding="utf-8" ?>
<Shell x:Class="TestProject.AppShell" x:Name="shell"
    xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
    xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
    xmlns:local="clr-namespace:TestProject">
    <FlyoutItem
        Route="동물"
        FlyoutDisplayOptions="AsMultipleItems">
        <Tab
            Route="국내"
            Icon="sample1.png"
            Title="국내">
            <ShellContent
                Route="고양이"
                Icon="sample2.png"
                Title="고양이"
                ContentTemplate="{DataTemplate local:CatPage}" />
            <ShellContent
                Route="개"
                Icon="sample3.png"
                Title="개"
                ContentTemplate="{DataTemplate local:DogPage}" />
        </Tab>
        <ShellContent
            Route="원숭이"
            Icon="sample1.png"
            Title="원숭이"
            ContentTemplate="{DataTemplate local:MonkeyPage}" />
        <ShellContent
            Route="코끼리"
            Icon="sample2.png"
            Title="코끼리"
            ContentTemplate="{DataTemplate local:ElephantPage}" />
        <ShellContent
            Route="곰"
            Icon="sample3.png"
            Title="곰"
            ContentTemplate="{DataTemplate local:BearPage}" />
    </FlyoutItem>
    <ShellContent
        Route="정보"
        Icon="sample1.png"
        Title="정보"
        ContentTemplate="{DataTemplate local:AboutPage}" />
</Shell>

 

728x90

 

▶ AppShell.xaml.cs

namespace TestProject;

/// <summary>
/// 앱 쉘
/// </summary>
public partial class AppShell : Shell
{
    //////////////////////////////////////////////////////////////////////////////////////////////////// Constructor
    ////////////////////////////////////////////////////////////////////////////////////////// Public

    #region 생성자 - AppShell()

    /// <summary>
    /// 생성자
    /// </summary>
    public AppShell()
    {
        InitializeComponent();

        Routing.RegisterRoute("원숭이/원숭이상세", typeof(MonkeyDetailPage));
    }

    #endregion

    //////////////////////////////////////////////////////////////////////////////////////////////////// Method
    ////////////////////////////////////////////////////////////////////////////////////////// Protected

    #region 탐색 전 처리하기 - OnNavigating(e)

    /// <summary>
    /// 탐색 전 처리하기
    /// </summary>
    /// <param name="e">이벤트 인자</param>
    protected override async void OnNavigating(ShellNavigatingEventArgs e)
    {
        base.OnNavigating(e);

        if(e.Current != null && e.Current.Location.OriginalString.StartsWith("//동물/국내/") && e.Target.Location.OriginalString.StartsWith("//동물/국내/"))
        {
            return;
        }

        ShellNavigatingDeferral deferral = e.GetDeferral();

        string result = await DisplayActionSheet("확인", "예", "아니오", "페이지를 이동하시겠습니까?");

        if(result != "예")
        {
            e.Cancel();
        }

        deferral.Complete();
    }

    #endregion
}
728x90
반응형
그리드형(광고전용)
Posted by icodebroker

댓글을 달아 주세요