.NET MAUI实战 Routing

Posted dotNET跨平台

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了.NET MAUI实战 Routing相关的知识,希望对你有一定的参考价值。

1.详情

本章继续分享.NET MAUI中的路由,这个概念依旧是在Prism里存在过的概念。如果使用过Prism框架的小伙伴使用该机制上手速度是非常快的。接下来一起来看看什么是路由。

.NET 多平台应用 UI (.NET MAUI) Shell 包含基于 URI 的导航体验,该体验使用路由导航到应用中的任何页面,而无需遵循设置的导航层次结构。此外,它还能够向后导航,不必访问导航堆栈上的所有页面。

本次分享内容:

1.路由导航

2.路由传值

2.详细内容

(1)路由导航

这里分享一个基础的路由使用大致分为两步:

1.路由注册

2.路由导航

MainPage.xaml.cs

public partial class MainPage : ContentPage

    public MainPage()

        InitializeComponent();
        Routing.RegisterRoute("Page1",typeof(NewPage1));
        Routing.RegisterRoute("Page2", typeof(NewPage2));
    

    private void BtnPage2_Clicked(object sender, EventArgs e)

        Shell.Current.GoToAsync("Page1");
    

    private void BtnPage1_Clicked(object sender, EventArgs e)

        Shell.Current.GoToAsync("Page2");
    

NewPage2.xaml.cs

public partial class NewPage1 : ContentPage

    public NewPage1()

        InitializeComponent();


    private void BtnGoback_Clicked(object sender, EventArgs e)

        Shell.Current.GoToAsync("..");
    

(2)路由传值

MainPage.xaml.cs

public partial class MainPage : ContentPage

    public MainPage()

        InitializeComponent();
        Routing.RegisterRoute("Page1",typeof(NewPage1));
        Routing.RegisterRoute("Page2", typeof(NewPage2));
    

    private void BtnPage2_Clicked(object sender, EventArgs e)

        //参数封装
        var navigationParameter = new Dictionary<string, object>
         
            "TempMessage", "yo juster!" 
         ;
        //第一个参数路由名称,第二个参数参数内容
        Shell.Current.GoToAsync("Page1", navigationParameter);
    

    private void BtnPage1_Clicked(object sender, EventArgs e)

        Shell.Current.GoToAsync("Page2");
    

NewPage1.xaml.cs

//需要继承IQueryAttributable接口,然后实现接收参数的方法
public partial class NewPage1 : ContentPage , IQueryAttributable

    public NewPage1()

        InitializeComponent();


    private void BtnGoback_Clicked(object sender, EventArgs e)

        Shell.Current.GoToAsync("..");
    

    //接收参数实现
    public void ApplyQueryAttributes(IDictionary<string, object> query)

        //通过我们在MainPage封装好的参数字典。
        var msg = query["TempMessage"].ToString();
        DisplayAlert("Message",msg,"ok");

ref: https://docs.microsoft.com/zh-cn/dotnet/maui/fundamentals/shell/navigation

以上是关于.NET MAUI实战 Routing的主要内容,如果未能解决你的问题,请参考以下文章

(01).NET MAUI实战 建项目

.NET MAUI实战 FilePicker

.NET MAUI实战 FolderPicker

.NET MAUI实战 MessagingCenter

Blazor Hybrid / MAUI 简介和实战

Blazor Hybrid / MAUI 简介和实战