MAUI 入门教程系列(5.XAML及页面介绍)

前言

作为微软的UI框架,除了Winform以外,多数是以创建XAML文件的方式来编写前端的页面,尽管你也可以通过C#代码来编写你的用户界面,与Xamarin.Forms相同,在MAUI上编写XAML的声明方式与其相同,重构了底层部分但又大部分继承了原有的模式。

相比较其他的XAML声明的UI框架,如:WPF、UWP、UnoPlatform、Avalonia 它们的声明方式则各有不同。

XAML介绍

在MAUI中,创建一个XAML页面, 主要包含两个部分: XAML文件+CS文件。

  • XAML

<ContentPagex:Class="MauiApp5.MainPage"xmlns="http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"><!--    -->
</ContentPage>

x:Class : 代表XAML文件指向的 partial 类, XAML负责UI设计, CS类负责编写业务逻辑。
xmlns : 全名xamlnamespace, 代表声明XAML命名空间
xmlns:x="..." : 带别名的命名xml空间, 通过别名可以访问该命名空间下的对象(可访问)

问题1: 带别名的命名空间与不带别名的命名空间有何区别?

首先,对于一个XAML文件而言,只能存在一个不带别名的命名空间,这样可以不用带别名去访问该命名空间下的对象,默认情况下,我们可以使用框架提供的各种UI对象,这是默认的,我们不需要显示通过别名去访问这些对象,对于我们自定义的命名空间,则可以通过别名去访问。

  • 默认命名空间下访问对象

<Grid><StackLayout><Button/> <Label/><Image/></StackLayout></Grid>
  • 声明别名的方式去访问对象

<m:ContentPagex:Class="MauiApp5.MainPage"xmlns:m="http://schemas.microsoft.com/dotnet/2021/maui"xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"><m:Grid><m:StackLayout><m:Button/><m:Label/><m:Image/></m:StackLayout></m:Grid>
</m:ContentPage>

问题2: x:Class 指向的部分类有何要求?

CS partial 类与XAML 是同一个类,只是负责的工作不同。XAML 通常比等效代码更简洁且可读,而C#代码则可以处理复杂的条件判断、逻辑处理。确保的是,该部分类需要和XAML的基类相同。

  • CS

public partial class MainPage : ContentPage
{ public MainPage(){InitializeComponent(); } 
}

页面介绍

MAUI框架内置了4种页面类型, 以满足不同的应用场景, 如下:
0ad98f65d0b4bfdc72af16e2a97ea6a7.png

  • ContentPage
    内容页,通常用于定义页面的视觉布局、嵌套显示子元素等

  • FlyoutPage
    包含了一个显示项的浮出控件页和一个详细信息页, 封装了用于侧面导航以及操作的功能

  • NavigationPage
    提供了用于向前后导航的页面
    5ed9dad52eb3676f75d50a3514bbf785.png
    e0867035148d8c261b9f33e07ff18042.png

  • TabbedPage
    提供选项卡切换式的页面,在移动设备中很常见。

以上这些页面类型, 它们都是直接或者间接继承于Page类, 各自实现了一些功能。

总结

本文主要介绍了MAUI中XAML的文件类说明以及提供的几种页面类型,后面的文章中会主要介绍XAML中的具体布局以及方法。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/285334.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝牙mesh网络基础

蓝牙mesh网络基础转载于:https://blog.51cto.com/11534544/2044130

Linux系统开机自启流程

第一步&#xff1a;POST&#xff08;Power On Safe Test&#xff09;加电自检当按下电源键以后&#xff0c;CPU因为有电流通过便开始对自身、I/O设备、内存等硬件进行检验。那么CPU如何得知这些自检指令&#xff1f;我们知道指令存在于内存当中&#xff0c;寻找内存也需要指令。…

ArcGIS空间数据:矢量和栅格数据结构详解

文章目录 矢量数据结构矢量数据简介Shapefile矢量格式栅格数据结构地理数据库中的栅格栅格管理策略栅格数据的地理属性栅格的地理属性通常包括地理数据集中的栅格块表实体栅格表示矢量数据结构 矢量数据简介 基于矢量数据模型的数据结构简称矢量数据结构,是通过记录实体坐标…

C语言试题130之有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:有一个已经排好序的数组。现输入一个数,要求按原来的规律将它插入数组中 分析:先判…

[转]一文读懂目标检测:R-CNN、Fast R-CNN、Faster R-CNN、YOLO、SSD

版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/kwame211/article/details/88016151 一、目标检测常见算法 object detection&#xff0c;就是在给定的图片中精确找到物体所在位置&#xff0c;并标注出物体的类别。所以&a…

在代码中使用度量单位,从而生活更美好

在我们的应用软件中&#xff0c;涉及到物理化学计算时&#xff0c;只有 Frink 、F#、Modelica 少数语言变量是自带单位的&#xff0c;大部分语言变量仅包含数值&#xff0c;单位转换需要在变量进行公式计算之前完成&#xff0c;计算后再把结果单位转换为输出单位&#xff0c;单…

C#(Sharp)进阶篇:文件操作

文章目录 8.1 文件系统概述8.2 驱动器、目录和文件8.2.1 与IO操作相关的枚举8.2.2 驱动器8.2.3 目录8.2.4 文件8.3 文件流和数据流8.3.1 抽象类Stream8.3.2 文件流FileStream8.3.3 流的文本读写器8.3.4 流的二进制读写器8.3.5 常用的其他流对象8.4 应用实例8.1 文件系统概述

shell中字符串操作【转】

转自&#xff1a;http://blog.chinaunix.net/uid-29091195-id-3974751.html 我们所遇到的编程语言中(汇编除外)都少不了字符串处理函数吧&#xff0c; 当然shell编程也不例外咯&#xff0c;那么下面我们一起来看下shell中字符串 处理的相关操作吧。大概下面的字符串操作可以分为…

[转]神经网络框架

Pytorch上手使用 近期学习了另一个深度学习框架库Pytorch&#xff0c;对学习进行一些总结&#xff0c;方便自己回顾。 Pytorch是torch的python版本&#xff0c;是由Facebook开源的神经网络框架。与Tensorflow的静态计算图不同&#xff0c;pytorch的计算图是动态的&#xff0c;可…

10分钟实现dotnet程序在linux下的持续部署

背景 一直以来&#xff0c;程序署都是非常麻烦且无聊的事情&#xff0c;在公司一般都会有 devops 方案&#xff0c;整个 cicd 过程涉及的工具还是挺多的&#xff0c;搭建起来比较麻烦。那么对于一些自己的小型项目&#xff0c;又不想搭建一套这样的环境&#xff0c;怎么办呢。。…

C语言试题131之将一个数组逆序输出。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:将一个数组逆序输出。 分析:…

【错误异常大全】:无法加载 DLL“ArcGISVersion.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。

文章目录 错误异常解决方案错误异常 无法加载 DLL“ArcGISVersion.dll”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。 解决方案 将目标平台改为x86,具体步骤如下: 点击【配置管理器】。 下拉活动解决方案平台,点击【新建】。 选择x86,点击【确定】。

博客即简历

本文转载自&#xff1a;http://www.cnblogs.com/stoneniqiu/p/5271248.html。 我个人也是在一直坚持写博客&#xff0c;每月至少一篇&#xff0c;并慢慢地将其变成了自己的习惯。一些想法与本文不谋而合&#xff0c;所以决定转载此文。 --------------------------------------…

C语言试题132之取一个整数 a 从右端开始的 4~7 位。

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:取一个整数 a 从右端开始的 …

【错误异常大全】:ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS

文章目录 问题描述解决方法问题描述 ArcGIS version not specified. You must call RuntimeManager.Bind before creating any ArcGIS components. 解决方法 打开program.cs,把ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.EngineOrDesktop); 放到Application…

统一建模语言 UML

目录 统一建模语言 UMLUML定义了5类10种模型图一用例图用于建立需求模型二静态图主要描述系统的静态表示和关系包括类图包图对象图三行为图描述系统动态模型和对象组成的交换关系包括状态图和活动图四交互图用于描述对象间的交互关系由一组对象和它们之间的关系组成包含它们之间…

【错误异常大全】:正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。

文章目录 错误异常:解决方案一:解决方案二:错误异常: 正尝试在 OS 加载程序锁内执行托管代码。不要尝试在 DllMain 或映像初始化函数内运行托管代码,这样做会导致应用程序挂起。 解决方案一: 1、把VS菜单的 调试->异常->Managed Debuggin Assistants->LoaderLo…

C语言试题133之画圆形

📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 ✅作者简介:大家好,我是码莎拉蒂,CSDN博客专家(全站排名Top 50),阿里云博客专家、51CTO博客专家、华为云享专家 1、题目 题目:画圆形 2 、温馨提示 想获取…

[转]阿里编程规范(精简版)

文章目录 1、简介2、命名:3、格式规约4、注释规约5、OOP规约6、集合处理7、控制语句8、异常9、日志10、单元测试11、工程规约1、简介 统一规范标准将有助于提高行业编码规范化水平&#xff0c;帮助行业人员提高开发质量和效率、大大降低代码维护成本 2017年年初&#xff0c;首次…

.Net之延迟队列

介绍具有队列的特性&#xff0c;再给它附加一个延迟消费队列消息的功能&#xff0c;也就是说可以指定队列中的消息在哪个时间点被消费。使用场景延迟队列在项目中的应用还是比较多的&#xff0c;尤其像电商类平台&#xff1a;订单成功后&#xff0c;在30分钟内没有支付&#xf…