在搭建好环境之后,我们需要了解XamarinForms跨平台项目的文件结构,才能更好上手App的开发。
先看XamarinForms生成的跨平台项目下有两个XAML文件,一个App.xaml文件,一个MainPage.xaml文件,分别表示App的启动页设置和启动主页面的内容。现在可以打开App.xaml.cs文件,在这个文件中,我们可以看到App的主页指向了MainPage页面。因此可以认为这里是整个App的入口。
让我们把目光转向MainPage页面的前端代码:
最上面一行表示XML的版本是1.0,使用的编码格式是utf-8。
第二行中包含一个ContentPage标签表示一个内容页,用于显示内容,是整个XAML文件的根元素。在它后面有一些链接声明,它代表根元素中包含了xmlns和xmlns:x等属性。ContentPage有一个Content属性,在这里被省略掉了,系统会自动识别出来,这里需要注意,ContentPage里面只能放一个控件,或者一个布局,如果这里放了两个控件,前面的那一个将会被覆盖掉。
这些属性向 XAML 处理器指明哪些命名空间包含标记将要引用的元素的元素定义。xmlns 属性专门指示默认的 xmlns 命名空间。在默认的 xmlns 命名空间中,可以不使用前缀指定标记中的对象元素。xmlns:x 属性指示另外一个 xmlns 命名空间,该命名空间映射 XAML 语言命名空间,也就是后面的链接。xmlns:local表示所引用资源的完整命名空间,在这里指的是App1,即项目名称。x:Class为代码指定了命名空间和类名。
然后下面是一串Label控件的代码,它通过Text属性为这个Label控件指明了显示文本,通过VerticalOptions属性指明了该控件在垂直方向的显示位置,同理HorizontalOptions属性指明了该控件在水平方向的显示位置,这两个属性共同作用,把这个Label标签置于整个手机屏幕的正中央。
最后还有一个ContentPage用于关闭ContentPage标签,换句话说,所有的标签都是成对出现的,要么使用<Label></Label>这种形式关闭,要么使用<Label />这种形式关闭,看个人喜好而定。
当然Label控件远不止这两个属性,还有一些文字颜色,文本对齐方式等,这些在之后的文章中将一一介绍出来。
让我们把目光转向MainPage的后台代码文件,也就是MainPage.xaml.cs文件,它声明了一个partial类型的类,继承自ContentPage,因此可以粗略地认为,这两个相关的文件(MainPage.xaml和MainPage.xaml.cs)是通过继承类ContentPage相联系的,因此它是可以更改的。在类中声明了一个不带参数的构造函数,InitializeComponent表示将MainPage初始化。另外,如果需要在页面间传值,那么就有可能会需要自己手动声明一个带参的构造函数,来实现这样的需求。
最后回到App的cs后台文件中,它有三个受保护并且重写过的方法,OnStart表示App程序在启动时要处理的业务,同理OnSleep表示在App休眠时要处理的业务,OnResume表示从休眠中唤醒需要处理的业务。这些如果与我们平常使用的App联系起来应该是很好理解的。
如果使用C#实现那个Label控件的话也很简单,只需在MainPage.xaml中声明一个Label标签,并通过x:Name为它取个名字。
然后转到MainPage的cs文件中,在初始化MainPage后,写上需要显示的内容和属性即可,这里显示的一个垂直和水平都居中的红色文本:
好了,这篇大概解释了XamarinForms项目的组成,毕竟都是从官网撸来的,有什么不正确的地方请大家给予指正,共同进步。