(04).NET MAUI实战 MVVM

1.概要

本章将讲解如何在MAUI中使用简单的MVVM模式开发“ListView”内容的增删功能,MVVM在MAUI中也同样适用。

3739b85e6ccb43c87052df0611daace3.png

Microsoft.Toolkit.Mvvm

在学习之前我们先了解一个nuget包,它可以帮助我们省去一些代码的开发时间。包Microsoft.Toolkit.Mvvm (aka MVVM Toolkit) 是一个现代、快速、模块化的 MVVM 库。此包面向 .NET Standard,以便在任何应用平台上使用它:UWP、WinForms、WPF、Xamarin、Uno 等;在任何运行时:.NET Native、.NET Core、.NET Framework或 Mono。它在所有上运行。在所有情况下,API 图面都是相同的,因此非常适合生成共享库。在解决方案资源管理器中,右键单击项目,然后选择“管理NuGet包”。搜索 Microsoft.Toolkit。Mvvm 并安装它。

c32a59da095c4814102f7aed626a025f.png

2.详细内容

Project

f09d1d2e5776523430308b9ad041b336.png

View

<Grid RowDefinitions="500,50"><ListView ItemsSource="{Binding Temps}"/><StackLayout Grid.Row="1"><Button WidthRequest="100" HeightRequest="25" Text="add" Command="{Binding AddCommand}"/><Button WidthRequest="100" HeightRequest="25" Text="add" Command="{Binding DeleteCommand}"/></StackLayout>
</Grid>

ViewModel

//ViewModel需继承public class MainViewModel : ObservableObject{private string _test;private ObservableCollection<MainModel> _temps;private ICommand addCommand;private ICommand deleteCommand;//数据通知集合public ObservableCollection<MainModel> Temps { get => _temps; set => _temps = value; }//命令public ICommand AddCommand { get => addCommand ?? (addCommand = new RelayCommand(AddCallback));}public ICommand DeleteCommand { get => deleteCommand ?? (deleteCommand = new RelayCommand(DeleteCallback));  }//数据通知字段public string Test { get => _test; set => SetProperty(ref _test , value); }public MainViewModel() {//初始化Temps = new ObservableCollection<MainModel>();Temps.Add(new MainModel { Name = "zhangsan" });Temps.Add(new MainModel { Name = "zhangsan" });}//命令执行内容private void AddCallback(){Temps.Add(new MainModel { Name = DateTime.Now.ToString() });}private void DeleteCallback(){Temps.RemoveAt(0);}}

Model

public class MainModel
{public string Name { get; set; }public override string ToString(){return Name;}
}

Run

8e0add20b2f86a087b2a2763ef6c59bd.png

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

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

相关文章

[转]浅析Tomcat、JBOSS、WebSphere、WebLogic、Apache

做任何web项目&#xff0c;都离不开服务器&#xff0c;有钱的公司用WebSphere、WebLogic&#xff0c;没钱公司用nginxtomcat&#xff0c;不要小瞧nginxtomcat麻雀虽小&#xff0c;五脏俱全。 服务器的知识&#xff0c;在笔试、面试中会经常被问到&#xff0c;对于一个合格的程序…

PHP require和include的区别

require一个文件存在错误的话&#xff0c;那么程序就会中断执行了&#xff0c;并显示致命错误 include一个文件存在错误的话&#xff0c;那么程序不会中端&#xff0c;而是继续执行&#xff0c;并显示一个警告错误。 以下为补充&#xff1a;1. include有返回值&#xff0c;而r…

C语言试题116之打印出如下图案(菱形)

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

【数据库原理及应用】经典题库附答案(14章全)——第四章:关系系统及其优化

【数据库原理及应用】经典题库附答案(14章全)——第一章:数据库基础知识 【数据库原理及应用】经典题库附答案(14章全)——第二章:关系数据库知识 【数据库原理及应用】经典题库附答案(14章全)——第三章:结构化查询语言SQL 【数据库原理及应用】经典题库附答案(14章…

WTM重大更新,多租户和单点登录

WTM重大更新多租户单点登录随着WTM被越来越多地应用于企业&#xff0c;用户对于多租户和单点登录的需求越来越强烈。经过了几个月的努力&#xff0c;我们把WTM底层代码又进行了一次优化和重构&#xff0c;加入了多租户和单点登录的功能。VUE&#xff0c;Blazor&#xff0c;LayU…

struts2注解

2019独角兽企业重金招聘Python工程师标准>>> 以下均为本人工作中的笔记内容&#xff0c;不够全面具体。碰到什么我就记录什么&#xff0c;只是作为笔记使用&#xff0c;希望大家多提宝贵意见&#xff0c;共同进步。Action("login"):定义action //或者写…

[转]H5直播之从推流服务搭建到视频直播

转自http://www.php.cn/html5-tutorial-403035.html 最近视频直播比较火&#xff0c;发现目前 WEB 上主流的视频直播方案有 HLS 和 RTMP&#xff0c;移动 WEB 端目前以 HLS 为主&#xff0c;PC端则以 RTMP 为主实时性较好&#xff0c;接下来将围绕这两种视频流协议来展开H5直播…

【数据库原理及应用】经典题库附答案(14章全)——第五章:关系数据理论

【数据库原理及应用】经典题库附答案(14章全)——第一章:数据库基础知识 【数据库原理及应用】经典题库附答案(14章全)——第二章:关系数据库知识 【数据库原理及应用】经典题库附答案(14章全)——第三章:结构化查询语言SQL 【数据库原理及应用】经典题库附答案(14章…

webform数据导出

把数据放到一个泛型集合里&#xff0c;再把泛型集合里面的数据放到一个table中&#xff0c;设置好文件路径&#xff0c;然后进行文件读取&#xff0c;最后供用户下载。 数据导出放在一个按钮中就可以了 using System; using System.Collections.Generic; using System.Linq; us…

C语言试题117之有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的前 20 项之和

✅作者简介:大家好我是码莎拉蒂,CSDN博客专家🥇🥇🥇 📃个人主页:个人主页 🔥系列专栏:C语言试题200例 💬推荐一款模拟面试、刷题神器👉 点击跳转进入网站 1、题目 题目:有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13…求出这个数列的前 20 项之和。 分析…

Ionic Mac 环境配置

2019独角兽企业重金招聘Python工程师标准>>> Ionic Mac 环境配置 安装cordova之前要安装nodejs 会包含npm安装&#xff08;npm是个包管理器&#xff09;&#xff0c;到官网下载https://nodejs.org/en/download/ 是个pkg包下载之后双击下载包运行然后 step …

【数据库原理及应用】经典题库附答案(14章全)——第六章:关系数据库设计过程

【数据库原理及应用】经典题库附答案(14章全)——第一章:数据库基础知识 【数据库原理及应用】经典题库附答案(14章全)——第二章:关系数据库知识 【数据库原理及应用】经典题库附答案(14章全)——第三章:结构化查询语言SQL 【数据库原理及应用】经典题库附答案(14章…

(03).NET MAUI实战 基础控件

1.概要本章将继续介绍.NET MAUI中的常用基础控件&#xff0c;让刚刚接触MAUI的小伙伴有写基础的认识&#xff0c;心里有底开发起来将得心应手。下面将列出一些常用的基础控件&#xff1a;控件名中文名称说明Button按钮与WPF中的基础用法无太大变化CheckBox单选框与WPF中的基础用…

ffmpeg源码分析及mp4文件解析

一.mp4文件的组织 1. mp4文件的box(ffmpeg中叫atom) mp4是由一系列的box组成的&#xff0c;每个box的header是8个字节(4字节的长度,4字节的type) 第一个box比较特殊&#xff0c;其type类型为ftyp,还包含一个sub-type 0000000: 0000 0020 6674 7970 6973 6f6d 0000 0200 ... f…

【数据库原理及应用】经典题库附答案(14章全)——第七章:数据库恢复技术

【数据库原理及应用】经典题库附答案(14章全)——第一章:数据库基础知识 【数据库原理及应用】经典题库附答案(14章全)——第二章:关系数据库知识 【数据库原理及应用】经典题库附答案(14章全)——第三章:结构化查询语言SQL 【数据库原理及应用】经典题库附答案(14章…

C++库(Google Breakpad)

Google Breakpad是什么&#xff1f; 一个开源的多平台崩溃报告系统。 Google breakpad是一个非常实用的跨平台的崩溃转储和分析模块&#xff0c;它支持Windows&#xff0c;Linux和Mac和Solaris。由于他本身跨平台&#xff0c;所以很大程度上减少了我们在平台移植时的工作&#…

java eleven进度条

2019独角兽企业重金招聘Python工程师标准>>> 一个矩形组件 MethodDescribleJProgrssBar()不带进度字符&#xff0c;最小值0最大值100的水平进度条JProgressBar(int orient)VERTICAL/HORIZONTALJProgressBar(int in,int max)指定最大最小的水平进度条JProgressBar(in…

Docker:多阶段构建 ASP.NET Core 应用镜像

本文选自『.NET大牛之路』知识星球&#xff0c;发布于2022年05月25日。今天我们一起来写 Dockerfile 构建一个 ASP.NET Core 应用镜像&#xff0c;同时还会将镜像发布到 Docker Hub 仓库。1创建示例 Web 应用程序为了演示&#xff0c;我们先创建一个 ASP.NET Core 应用程序&…

[转]【JAVA各版本特性】JAVA 1.0

闲来想了解下各版本之间的特性&#xff0c;搜索没有最新的特性说明&#xff0c;故想写一份。废话不多说。 JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本&#xff0c;伟大的一个里程碑&#xff0c;但是是纯解释运行&#xff0c;使用外挂JIT&#xff0c;性能比较差&#xff0…

【数据库原理及应用】经典题库附答案(14章全)——第八章:数据库并发控制

【数据库原理及应用】经典题库附答案(14章全)——第一章:数据库基础知识 【数据库原理及应用】经典题库附答案(14章全)——第二章:关系数据库知识 【数据库原理及应用】经典题库附答案(14章全)——第三章:结构化查询语言SQL 【数据库原理及应用】经典题库附答案(14章…