MAUI正式版发布半年了,Net 7也发布了,再次学习MAUI跨平台开发。UI类型选择Blazor,因为Html的生态圈比Xaml好太多了,能用Html解决的,就不要用Xaml。Blazor既可以开发网页客户端,又可以开发移动客户端,一个技术栈可以涵盖前后端,多平台,做小型工具软件不错。

开发环境Win10,Visual Studio 17.5.0 Preview 1.0,安卓模拟器Pixle 5 - API 30(Android 11.0 - API 30)。

 

新建项目

新建MAUI Blazor项目,选择位置D:\Software\gitee\mauiblazorapp。

选择Net 7.0框架。目标平台仅保留安卓和Windows。

D:\Software\gitee\mauiblazorapp\MaBlaApp\MaBlaApp.csproj

<TargetFrameworks>net7.0-android</TargetFrameworks>

<!--<TargetFrameworks>net7.0-android;net7.0-ios;net7.0-maccatalyst</TargetFrameworks>-->

<TargetFrameworks Condition="$([MSBuild]::IsOSPlatform('windows'))">$(TargetFrameworks);net7.0-windows10.0.19041.0</TargetFrameworks>

 

Shell布局

MAUI Blazor项目是网站布局,但是手机APP最常见的布局还是微信这种,Xamarin Forms项目可以直接选择Shell模板,MAUI Xaml项目也可以,但是MAUI Blazor项目不行,这真是一大遗憾。

幸好微软提供了一个移动APP布局的DEMO,这个项目是专门为了展示MAUI跨平台开发特性而设计的,有XAML和Blazor两个版本。

https://github.com/microsoft/dotnet-podcasts

打开其中的MAUI Blazor项目。

D:\Software\Test\dotnet-podcasts-main\src\MobileBlazor\mauiapp\NetPodsMauiBlazor.csproj

参照着DEMO的MainLayout.razor和css文件修改。对于不熟悉Html和css的.Net开发者而言,也是非常头大的工作。希望MAUI Blazor也能提供Shell布局的模板。

D:\Software\Test\dotnet-podcasts-main\src\Web\Pages\Shared\MainLayout.razor

D:\Software\Test\dotnet-podcasts-main\src\Web\Pages\Shared\MainLayout.razor.css

 

官网DEMO采用grid布局实现了Shell布局效果。这个其实可以参考Xaml的Grid布局或者StackLayout布局去理解,把一个窗口横着分几块,每一块里边再竖着分几块。手机小尺寸页面的情况下,横向分4块。PC大尺寸页面的情况下,横向分3块。

 

复制代码

复制代码

 

我写的DEMO很简单,手机小尺寸页面的情况下,横向分2块。PC大尺寸页面的情况下,横向分1块,相比dotnet-podcasts项目没有header和player-bar播放栏。简而言之,就只有nav-bar导航栏和main-view主视图,小尺寸页面上下排列,大尺寸页面左右排列。

D:\Software\gitee\mauiblazorapp\MaBlaApp\Shared\MainLayout.razor.css

复制代码

复制代码

然后再借鉴dotnet-podcasts项目的菜单样式。

D:\Software\Test\dotnet-podcasts-main\src\Web\Pages\Shared\NavMenu.razor

D:\Software\Test\dotnet-podcasts-main\src\Web\Pages\Shared\NavMenu.razor.css

 

 

我写的DEMO减少为3个按钮

 

 

3个按钮就是Blazor项目模板自带的

D:\Software\gitee\mauiblazorapp\MaBlaApp\Shared\NavMenu.razor

复制代码

复制代码

把dotnet-podcasts项目的字体也搬过来

D:\Software\Test\dotnet-podcasts-main\src\Web\Components\wwwroot\css\fonts

放在wwwroot\css\fonts

D:\Software\gitee\mauiblazorapp\MaBlaApp\wwwroot\css\fonts

 

照搬dotnet-podcasts项目的字体、颜色定义

D:\Software\Test\dotnet-podcasts-main\src\Web\Components\wwwroot\css\styles.css

放在app.css里边

D:\Software\gitee\mauiblazorapp\MaBlaApp\wwwroot\css\app.css

 

复制代码

复制代码

 

测试效果

在Windows平台跑一下,宽屏,竖屏效果都对了

 

DEMO代码地址:https://gitee.com/woodsun/mauiblazorapp

来源地址:https://www.cnblogs.com/sunnytrudeau/tag/MAUI/

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。