1.详情
本章继续分享.NET MAUI中的路由,这个概念依旧是在Prism里存在过的概念。如果使用过Prism框架的小伙伴使用该机制上手速度是非常快的。接下来一起来看看什么是路由。
.NET 多平台应用 UI (.NET MAUI) Shell 包含基于 URI 的导航体验,该体验使用路由导航到应用中的任何页面,而无需遵循设置的导航层次结构。此外,它还能够向后导航,不必访问导航堆栈上的所有页面。
本次分享内容:
1.路由导航
2.路由传值
2.详细内容
(1)路由导航
这里分享一个基础的路由使用大致分为两步:
1.路由注册
2.路由导航
MainPage.xaml.cs
代码语言:javascript复制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
代码语言:javascript复制public partial class NewPage1 : ContentPage
{
public NewPage1()
{
InitializeComponent();
}
private void BtnGoback_Clicked(object sender, EventArgs e)
{
Shell.Current.GoToAsync("..");
}
}
(2)路由传值
MainPage.xaml.cs
代码语言:javascript复制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
代码语言:javascript复制//需要继承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