.NET MAUI学习笔记

参考文档

需创建新项目,可以点击上面的链接,进行查看

CommunityToolkit.Mvvm

官网文档

本次学习使用的是8.0.0版本,进行学习基础知识

第一步:功能实现,创建一实现方法

using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input; namespace MauiApp2.ViewModels
{
public class MainPageViewModel : ObservableObject {
//默认值空字符串
private string _result = string.Empty;
//定义一个属性
public string Result
{
get => _result;//直接返回_result
set => SetProperty(ref _result, value);//调用SetProperty函数,传递2个参数
}
//Hello World!实现
private RelayCommand _clickMeCommand;
//点我命令ClickMeCommand实现Result变成Hello World!
//最终实现执行 set => SetProperty(ref _result, value);语句
public RelayCommand ClickMeCommand =>
_clickMeCommand ??= new RelayCommand(() => Result = "Hello World!");
}
}

  第二步:自定义一个存储服务的类;提供一些对象参数

using MauiApp2.ViewModels;

namespace MauiApp2;// 这地方是C#命名空间

//服务定位器
public class ServiceLocator
{
private IServiceProvider _serviceProvider;//服务提供;提供一些对象
//要MainPageViewModel
public MainPageViewModel MainPageViewModel =>
_serviceProvider.GetService<MainPageViewModel>();//依赖注入,IoC
//添加MainPageViewModel
public ServiceLocator()
{
var serviceCollection = new ServiceCollection(); serviceCollection.AddSingleton<MainPageViewModel>();//这地方是个 单件模式的应用 _serviceProvider = serviceCollection.BuildServiceProvider();//进行传递数据
}
}

  第三步:注册一个新的全局资源,便于其他页面使用

<?xml version = "1.0" encoding = "UTF-8" ?>
<Application xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:MauiApp2"
x:Class="MauiApp2.App">
<!--定义资源-->
<Application.Resources>
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary Source="Resources/Styles/Colors.xaml" />
<ResourceDictionary Source="Resources/Styles/Styles.xaml" /> <!--注册一个新的资源(可以理解成(全局注册,其他页面都可以使用))
local: 就是指 xmlns:local="clr-namespace:MauiApp2" 这个语句;意思是指这个命名空间(MauiApp2)
local:ServiceLocator 等同于 MauiApp2:ServiceLocator
-->
<ResourceDictionary>
<!--这个地方是用的HTML命名空间-->
<local:ServiceLocator x:Key="ServiceLocator"></local:ServiceLocator>
</ResourceDictionary> </ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

  第四步:进行最后页面功能的实现(Hello world)显示;

<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
BindingContext="{Binding MainPageViewModel, Source={StaticResource ServiceLocator}}"
x:Class="MauiApp2.MainPage"> <ScrollView>
<VerticalStackLayout
Spacing="25"
Padding="30,0"
VerticalOptions="Center"> <Label Text="{Binding Result}"></Label>
<Button Command="{Binding ClickMeCommand}"></Button>
</VerticalStackLayout>
</ScrollView> </ContentPage>

  创建类步骤如下图所示:

MVVM+IService架构:偏好储存

MVVM中包含的元素有Model,View,ViewModel

Model //承载数据

view //显示数据

ViewModel //为View准备数据

以上都不会读取数据库,就引出了今天学习的架构:MVVM + IService;访问数据库不归MVVM管,是MVVM外部的IService负责

MAUI学习记录的更多相关文章

  1. Quartz 学习记录1

    原因 公司有一些批量定时任务可能需要在夜间执行,用的是quartz和spring batch两个框架.quartz是个定时任务框架,spring batch是个批处理框架. 虽然我自己的小玩意儿平时不 ...

  2. Java 静态内部类与非静态内部类 学习记录.

    目的 为什么会有这篇文章呢,是因为我在学习各种框架的时候发现很多框架都用到了这些内部类的小技巧,虽然我平时写代码的时候基本不用,但是看别人代码的话至少要了解基本知识吧,另外到底内部类应该应用在哪些场合 ...

  3. Apache Shiro 学习记录4

    今天看了教程的第三章...是关于授权的......和以前一样.....自己也研究了下....我觉得看那篇教程怎么说呢.....总体上是为数不多的精品教程了吧....但是有些地方确实是讲的太少了.... ...

  4. UWP学习记录12-应用到应用的通信

    UWP学习记录12-应用到应用的通信 1.应用间通信 “共享”合约是用户可以在应用之间快速交换数据的一种方式. 例如,用户可能希望使用社交网络应用与其好友共享网页,或者将链接保存在笔记应用中以供日后参 ...

  5. UWP学习记录11-设计和UI

    UWP学习记录11-设计和UI 1.输入和设备 通用 Windows 平台 (UWP) 中的用户交互组合了输入和输出源(例如鼠标.键盘.笔.触摸.触摸板.语音.Cortana.控制器.手势.注视等)以 ...

  6. UWP学习记录10-设计和UI之控件和模式7

    UWP学习记录10-设计和UI之控件和模式7 1.导航控件 Hub,中心控件,利用它你可以将应用内容整理到不同但又相关的区域或类别中. 中心的各个区域可按首选顺序遍历,并且可用作更具体体验的起始点. ...

  7. UWP学习记录9-设计和UI之控件和模式6

    UWP学习记录9-设计和UI之控件和模式6 1.图形和墨迹 InkCanvas是接收和显示墨迹笔划的控件,是新增的比较复杂的控件,这里先不深入. 而形状(Shape)则是可以显示的各种保留模式图形对象 ...

  8. UWP学习记录8-设计和UI之控件和模式5

    UWP学习记录8-设计和UI之控件和模式5 1.日历.日期和时间控件 日期和时间控件提供了标准的本地化方法,可供用户在应用中查看并设置日期和时间值. 有四个日期和时间控件可供选择,选择的依据如下: 日 ...

  9. UWP学习记录7-设计和UI之控件和模式4

    UWP学习记录7-设计和UI之控件和模式4 1.翻转视图 使用翻转视图浏览集合中的图像或其他项目(例如相册中的照片或产品详细信息页中的项目),一次显示一个项目. 对于触摸设备,轻扫某个项将在整个集合中 ...

  10. UWP学习记录6-设计和UI之控件和模式3

    UWP学习记录6-设计和UI之控件和模式3 1.按钮 按钮,响应用户输入和引发 Click 事件的控件. 使用<Button>就能创建一个按钮控件了.按钮是 ContentControl, ...

随机推荐

  1. C#网络编程(五)----细嗦TCP粘包

    前情提要 四层网络模型各司其职,消息(SDU)在进入每一层时都会多加一个报头(PCI),这个PCI记录着该SDU的一些关键统计信息.SDU+PCI合并起来就组成一个完整的消息,简称为PDU 链路层:帧 ...

  2. VcXsrv鼠标不显示问题解决方法

    问题描述 在windows10上通过WSL2安装了ubuntu22.04的系统,在通过VcXsrv使用界面显示的时候,显示界面不显示鼠标指针. 我是通过步骤四直接解决的. 解决方法 1. 检查VcXs ...

  3. JVM划重点:引用类型、垃圾回收算法和内存划分

    一.Java四种引用类型    每种编程语言都有操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过"引用"(Reference).在 Java ...

  4. java-mybatis-手动分页工具类

    使用 List<PhcpSaBankAl> saBankAlList = phcpSaBankAlDao.getBankInfoList(loginUserType.getCityCode ...

  5. C#代码事件

    C#代码事件 从今天开始,WPF 的学习将上升到一个新的高度.之前主要都是围绕着界面上的内容,今天了解 C# 代码,让界面真正意义上能够有功能. 本文同时为b站WPF课程的笔记,相关示例代码 上节课自 ...

  6. 一则复杂 SQL 改写后有感

    抱歉很久没写技术博客. 自从LLM爆发之后,写概念堆叠的所谓"博客"已经没有意义了,那么我会思考我的博客还有什么作用. 得出的结论是:具体业务的讨论仍然是有价值的 所以之后会随缘更 ...

  7. 使用wxWidgets进行跨平台GUI开发(附1)

    补充说明wxWidgets在Windows下使用CMake的配置 wxWidgets官方提供了一个在Windows下使用CMake来构建wxWidgets库的方法,这样便于你自己用CMake构建项目. ...

  8. 基于CentOS Stream 8的物联网平台深度优化方案

    系统架构全景图 图表 一.系统平台优化(CentOS Stream 8) 1. 系统基础配置 bash # 1. 系统更新与加固 sudo dnf update -y sudo dnf install ...

  9. 实战讲解|Trino 在袋鼠云数栈的探索与实践

    当前随着企业内外部数据源的不断扩展和积累,数据呈现出大规模.多样化.质量参差不齐等显著特征.如何有效激活这些结构复杂且类型多样的数据资产,挖掘其深层价值,已成为众多企业亟待解决的实际挑战. 袋鼠云数栈 ...

  10. 数栈运维案例:云上RAC部署、运维及实践案例

    数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变 ...