因为微软不再生产任何移动设备并不意味着它没有移动策略。 它的策略是无论开发人员在哪里。 对于移动设备,这就是为什么它以Xamarin的形式交付自己的基于.Net的跨平台开发工具的原因 。

尽管Xamarin的初衷是为每个目标OS提供具有单独用户界面实现的代码通用内核,但仍然需要对关键UI构造的本机OS实现有所了解。 因此,为了简化开发并减少引入其他技能的需求,Xamarin团队引入了Xamarin.Forms 。 通过提供可跨平台呈现的一组控件,它旨在为Android和iOS应用程序提供单一的设计体验。

通过提供一种标准的UI设计方法 ,Xamarin.Forms从具有本地外观的应用程序迁移到具有Xamarin外观的应用程序。 对于是否为了开发的一致性而在Android和iOS上强加Xamarin UI,这无疑是一个有争议的决定。 但是,无论如何,该行业正在朝着这个方向发展:例如,在iOS或Android上安装银行应用程序,这两个平台在外观和行为上都几乎相同。 结果,用户不太可能被锁定在生态系统中,设备成本是他们选择不同产品的主要因素。 通过将UI与应用程序而非操作系统绑定在一起,设备之间的转换要容易得多。

Xamarin.Forms 4.0简介

即将发布的Xamarin.Forms 4.0致力于在两个移动平台之间提供更一致的设计。

它具有新的导航功能和向控件添加视觉效果的新方法。

其中最重要的也许是在Shell中引入了新的UI结构,这使定义应用程序UI更加简单,使您可以专注于代码而不是设计。 Microsoft将Shell描述为对移动应用程序(和桌面应用程序)通用的现有设计概念的演变:“主详细信息”页面,“导航”页面和“选项卡式”页面。 您可以通过一个包含应用程序描述的文件,一组常见的UI模式,可扩展的模板以及基于URI的应用内导航方法来实现该文件。

新的Visual Studio 2019版本具有模板包,该模板包添加了对Xamarin.Forms应用程序的Shell支持。 否则,您可以使用NuGet在您选择的IDE中安装Xamarin.Forms 4.0的beta版本。 由于这是Beta代码,因此尚不适用于生产应用程序。 尽管即将发布产品,但值得花时间习惯这些新功能,并考虑您的应用程序如何利用Shell和其他功能。

使用Shell构建页面导航

Shell的核心是XAML导航元素的层次结构 ,具有三个主要组件:

ShellItem是顶层,使用弹出窗口托管多个ShellItem。 它们每个都可以包含几个ShellSection。

每个ShellSection都添加了一个新的导航元素,使用底部的标签将ShellContent页面中的应用程序内容和功能部分分组。

在层次结构的底部,ShellContent页面等效于详细信息视图,并且当一个节包含多个ShellContent页面时,它们具有自己的顶部标签导航。

当用户是应用程序的新手,或者您要交付的内容量有限时,为用户提供应用程序内容的分层方法非常有意义。 但是,更高级和经验丰富的用户可能会发现此方法有局限性,因此Xamarin.Forms将提供一种更自定义的应用程序路由方案,该方案为页面提供自己的URI,并向ShellItem,ShellSection和ShellContent XAML标记添加路由信息。

应用内导航与路线

Xamarin.Forms使用的URI方案基于熟悉的HTTP,并带有RouteScheme,该RouteScheme定义了路由的构造方式(最好使用“ app”,因为您的路由位于应用内部),它相当于一个域名,并且路由本身由来自应用程序名称空间内应用程序导航层次结构各个部分的路由信息组成。

您的代码会将路线名称添加到您的XAML,因此,到银行应用程序中特定页面视图的链接可能是app://mybank.com/bankapp/account/checking/transfer 。 在这里,我使用bankapp作为我的应用程序名称空间,并直接导航到ShellItem中用于account标为transfer ShellContent和标为checking的ShellSection。

可以直接注册路线,将其链接到不属于Shell层次结构的页面上。 一旦页面在路由中注册,就可以使用Shell路由器使用与Shell页面相同的导航模型来调用该页面。 您可以使用路由将内容注入页面和控件中,并根据需要定向内容。

新外观:材质视觉

Xamarin.Forms 4.0的一个关键元素是新的Material Visual控件设计 (部分组件已在当前的Xamarin.Forms 3.6版本中提供)。 新的一致的控制主题集的第一个实现是Material Visual,它基于Google的Android Material Design。 这是一种可行的跨平台设计语言,Material Visual中的控件使您在Android和iOS上具有相似的外观。

Material Visual只是计划的视觉实现系列中的第一个,未来的版本将支持Microsoft的Fluent和Apple的Cupertino。 首先将适当的NuGet包添加到您的代码中,该包将新的设计语言绑定到现有的可视组件,并设置Material Design渲染器。 首先,在应用程序,iOS的AppDelegate.cs和Android的MainActivity.cs中初始化渲染器后,将应用程序页面的Visual属性设置为Material。

Material Visual是开发更丰富,更原生的Xamarin.Forms代码的一种有前途的方法。 但是,它仍然不是一站式的应用程序设计商店,因为您仍然需要为每个目标OS在不同的文件中设置渲染器。 这不是一个完美的跨平台用户界面; 由于iOS和Android都呈现本机控件(它们本身承载Material Visual设计)的方式仍然存在差异,因此字体和阴影之类的关键元素将基于操作系统默认值。 最近的挑战表明如何使用这些新控件来更新现有的基于Xamarin的应用程序 。

Microsoft在支持Visual Studio 2019中的Xamarin方面做了很多工作,这使得跨多个平台构建,测试和部署代码变得更加容易。 Xamarin.Forms 4.0的发布对于微软的移动开发人员来说将是重要的一步,尤其是面临Google Flutter日益普及的挑战时。