C#开发Android移动应用系列之路由设置及页面跳转
By
jerrxjr1220
at 2023-08-16 • 0人收藏 • 513人看过
最近工作上遇到一些新需求:老板希望能把上位机的一些信息或功能实现移植到移动端,主要针对安卓手机想开发一款app。
VS的Xamarin框架可以支持跨平台开发(Android、IOS、Mac、UWP、三星),比较容易实现把C#的功能移植到移动端,所以就试着做了些尝试。
后面会分几次分享一些通过Xamarin开发移动端应用。
路由设置和页面跳转
先通过VS创建Xamarin移动应用
在项目目录下新建Models、ViewsModel、Views三个文件夹,分别存放MVVM的模型
在ViewsModels中新建一个路由类PageRouter
using System; using System.Collections.Generic; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; namespace XamarinApp01.ViewsModel { public class PageRouter { private static Dictionary<string, Type> routes = new Dictionary<string, Type>(); public static void RegisterRoute(string route, Type pageType) { routes.Add(route, pageType); } public static async Task NavigateTo(string route) { if (routes.ContainsKey(route)) { Page page = (Page)Activator.CreateInstance(routes[route]); await Application.Current.MainPage.Navigation.PushAsync(page); } } } }
新建一个新页面Page2
在App.xaml.cs中注册Page2
using System; using Xamarin.Forms; using Xamarin.Forms.Xaml; using XamarinApp01.Views; using XamarinApp01.ViewsModel; namespace XamarinApp01 { public partial class App : Application { public App() { InitializeComponent(); // 注册页面路由 //PageRouter.RegisterRoute("Page1", typeof(Page1)); PageRouter.RegisterRoute("Page2", typeof(Page2)); // 设置初始页面 MainPage = new NavigationPage(new MainPage()); } protected override void OnStart() { } protected override void OnSleep() { } protected override void OnResume() { } } }
在View/MainPage.xaml中,添加一个跳转按钮
<Button Text="Next Page" Clicked="On_Click"/>
并在View/MainPage.xaml.cs中,添加事件处理
using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; using System.Text; using System.Threading.Tasks; using Xamarin.Forms; using Xamarin.Forms.Xaml; using XamarinApp01.ViewsModel; namespace XamarinApp01 { public partial class MainPage : ContentPage { public MainPage() { InitializeComponent(); } public async void On_Click(object sender, EventArgs e) { await PageRouter.NavigateTo("Page2"); } } }
5 个回复 | 最后更新于 2023-08-16
2023-08-16
#3
登录后方可回帖
有点高大上了呀..