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.pswp.cn/news/285334.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/285334.shtml
英文地址,請注明出處:http://en.pswp.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中字符串 處理的相關操作吧。大概下面的字符串操作可以分為…

如何提高上傳帶寬

參考文章&#xff1a;http://jingyan.baidu.com/article/db55b609af631b4ba30a2f23.html 1、已管理員身份運行&#xff1a;netsh interface tcp set global autotuningdisabled 2、 打開注冊表 找到HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\A FD\Parameters 3、創建新…

[轉]神經網絡框架

Pytorch上手使用 近期學習了另一個深度學習框架庫Pytorch&#xff0c;對學習進行一些總結&#xff0c;方便自己回顧。 Pytorch是torch的python版本&#xff0c;是由Facebook開源的神經網絡框架。與Tensorflow的靜態計算圖不同&#xff0c;pytorch的計算圖是動態的&#xff0c;可…

Eclipse啟動時布局不合理調整

1. 關掉 啟動頁 2. 關掉InstSearch頁 3.修正InSearch布局 3.1 默認InstSearch不合理&#xff0c;影響使用。 3.2 Inst 搜索一次&#xff0c;然后最小化InstSearch框&#xff0c;再從右側點擊&#xff0c;即可。轉載于:https://www.cnblogs.com/jhj117/p/6121298.html

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,點擊【確定】。

Go語言之反射

和Java語言一樣&#xff0c;Go也實現運行時反射&#xff0c;這為我們提供一種可以在運行時操作任意類型對象的能力。比如我們可以查看一個接口變量的具體類型&#xff0c;看看一個結構體有多少字段&#xff0c;如何修改某個字段的值等。TypeOf和ValueOf在Go的反射定義中&#x…

博客即簡歷

本文轉載自&#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種模型圖一用例圖用于建立需求模型二靜態圖主要描述系統的靜態表示和關系包括類圖包圖對象圖三行為圖描述系統動態模型和對象組成的交換關系包括狀態圖和活動圖四交互圖用于描述對象間的交互關系由一組對象和它們之間的關系組成包含它們之間…

[轉]npm生成的package.json文件中依賴項版本號前的波浪號(~)和插入符號(^)是啥意思?

package.json一般也就長這么模樣&#xff1a; {"name": "","description": "","version": "4.17.1","author": "","contributors": [],"license": "MIT",&quo…