栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[开发过程]<c#上位机>关于MAUI

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[开发过程]<c#上位机>关于MAUI

目录

1 框架

2 VS2022中新建的MAUI项目

2.1 程序入口

2.2 跳转到App

2.3 跳转到AppShell

2.4 跳转到MainPage


1 框架

 BCL :.NET 6 基类库 

 Mono Runtime和WinRT:提供执行环境。

Mono : 是CLR的开源实现(针对Android、iOS和 macOS), 是第三方做的开源项目。

The Mono Runtime | Monohttps://www.mono-project.com/docs/advanced/runtime/关于CLR(Common Language Runtime),可以看看下面的链接:

https://docs.microsoft.com/en-us/dotnet/standard/clrhttps://docs.microsoft.com/en-us/dotnet/standard/clr


谈及CLR,就需了解.net跨平台代码的实现过程:

  1. 选择编译器。

  2. 将代码编译为Microsoft 中间语言将您的代码编译为 MSIL。

  3. 在CLR,即时编译器(JIT) 将 MSIL 转换为本机代码。

  4. 运行代码。

https://docs.microsoft.com/en-us/dotnet/standard/managed-execution-processhttps://docs.microsoft.com/en-us/dotnet/standard/managed-execution-process


“托管代码(managed code)”与“非托管代码("unmanaged code")”的对比:

“托管代码”:托管代码执行由“runtime”管理。.NET中的“runtime”称为 CLR,CLR与实现无关(例如Mono、.NET Framework 或 .NET Core/.NET 5+)。CLR 负责获取“托管代码”,将其编译为机器代码,然后执行它。而且,“runtime”提供了一些重要的服务,例如自动内存管理、安全边界、类型安全等。

“非托管代码”(比如:C/C++ 程序):非托管代码几乎负责所有事情,其本质上是被加载到内存中并启动的二进制文件。从内存管理到安全考虑,都是非托管代码开发者需要考虑的事情。

What is managed code? | Microsoft DocsLearn how managed code is code whose execution is managed by a runtime, the Common Language Runtime (CLR).https://docs.microsoft.com/en-us/dotnet/standard/managed-code


2 VS2022中新建的MAUI项目

2.1 程序入口

VS2022中新建了MAUI项目后,程序入口如下:

其中代码如下: 

public static class MauiProgram
{
	public static MauiApp CreateMauiApp()
	{
		var builder = MauiApp.CreateBuilder();
		builder
			.UseMauiApp()
			.ConfigureFonts(fonts =>
			{
				fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
				fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
			});

		return builder.Build();
	}
}

代码.UseMauiApp()会跳转到 “App”中。


2.2 跳转到App

再看App,包含两个文件,

.xaml后缀的是界面UI相关内容,

.cs后缀的是该UI相关的逻辑。

App.xaml代码如下:



    
        
            
                
                
            
        
    

 主要看:


是颜色和默认样式的定义。

而App.xaml.cs中,主要是进行了页面的跳转,跳转到AppShell,代码如下:

public partial class App : Application
{
	public App()
	{
		InitializeComponent();

		MainPage = new AppShell();
	}
}

2.3 跳转到AppShell

再看AppShell,同样包含两个文件,但主要看AppShell.xaml。

AppShell.xaml代码如下,主要用了一个模板,路由到MainPage。




    


2.4 跳转到MainPage

接下来就要看 MainPage,同样是包括两个文件:

MainPage.xaml代码如下,是运行后看到的那个界面的UI代码: 



			 
    
        

            
                
            

而MainPage.xaml.cs的代码如下,主要是看其中的点击事件,即OnCounterClicked函数。

里面的CounterBtn与UI界面文件(MainPage.xaml)中的按钮对应。

即:                 x:Name="CounterBtn"
                Text="Click me"
                SemanticProperties.Hint="Counts the number of times you click"
                Clicked="OnCounterClicked"
                HorizontalOptions="Center" />

namespace OneDream;

public partial class MainPage : ContentPage
{
	int count = 0;

	public MainPage()
	{
		InitializeComponent();
	}

	private void OnCounterClicked(object sender, EventArgs e)
	{
		count++;

		if (count == 1)
			CounterBtn.Text = $"Clicked {count} time";
		else
			CounterBtn.Text = $"Clicked {count} times";

		SemanticScreenReader.Announce(CounterBtn.Text);
	}
}


后记:

持续更新中。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1012635.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号