(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,一经查实,立即删除!

相关文章

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直播…

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 …

(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…

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…

北京Uber优步司机奖励政策(3月11日)

滴快车单单2.5倍&#xff0c;注册地址&#xff1a;http://www.udache.com/ 如何注册Uber司机(全国版最新最详细注册流程)/月入2万/不用抢单&#xff1a;http://www.cnblogs.com/mfryf/p/4612609.html 优步奖励低/不挣钱/怎么办?看这里&#xff1a;http://www.cnblogs.com/mfry…

【招聘(广州)】成功易(广州).Net Core中高级开发工程师

成功易&#xff08;广州&#xff09;信息技术有限公司简介成功易是一家集团性公司&#xff0c;创立于2002年&#xff0c;总部位于北京&#xff0c;旗下拥有7家子公司。广州成功易成立于2019年&#xff0c;人员逐渐增长150人&#xff0c;组织架构完善&#xff0c; 我们是腾讯广告…

xcode 设置快捷键 整行上下移动

2019独角兽企业重金招聘Python工程师标准>>> 设置整行代码上下移动&#xff1a;找到Xcode中的自带的配置文件&#xff1a;/Applications/Xcode.app/Contents/Frameworks/IDEKit.framework/Versions/A/Resources/IDETextKeyBindingSet.plist用文本编辑IDETextKeyBind…

用.Net Core接入微信公众号开发

Part1前言最近想写一点基于.Net Core微信公众号开发的文章Part2测试公众号申请测试公众号申请地址:https://mp.weixin.qq.com/debug/cgi-bin/sandbox?tsandbox/login微信公众号开发文档:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html通过微…

腾讯、百度、小米等7家互联网各大厂的中台建设怎么样了?

中台是真正为前台而生的平台&#xff08;可以是技术平台&#xff0c;业务能力甚至是组织机构&#xff09;&#xff0c;它存在的唯一目的就是更好的服务前台规模化创新&#xff0c;进而更好的响应服务引领用户&#xff0c;使企业真正做到自身能力与用户需求的持续对接。 以下转载…

JAVA基础知识之网络编程——-基于AIO的异步Socket通信

异步IO 下面摘子李刚的《疯狂JAVA讲义》 按照POSIX标准来划分IO&#xff0c;分为同步IO和异步IO。对于IO操作分为两步&#xff0c;1&#xff09;程序发出IO请求。 2&#xff09;完成实际的IO操作。 阻塞IO和非阻塞IO都是针对第一步来划分的&#xff0c;如果发出IO请求会阻塞线程…

基于.NetCore开发博客项目 StarBlog - (13) 加入友情链接功能

系列文章基于.NetCore开发博客项目 StarBlog - (1) 为什么需要自己写一个博客&#xff1f;基于.NetCore开发博客项目 StarBlog - (2) 环境准备和创建项目基于.NetCore开发博客项目 StarBlog - (3) 模型设计基于.NetCore开发博客项目 StarBlog - (4) markdown博客批量导入基于.N…

EditPlus 文件查找功能:在指定文件夹,用正则查寻包含指定内容的文件,指定文件类型,并排除特殊文件名文件

单击菜单栏上的【Search】&#xff08;查找&#xff09;&#xff0c;选择【Find in Files】&#xff08;在文件中查找&#xff09;命令&#xff1a; 查找项&#xff1a;正则查找video标签&#xff0c;src为不包含http的mp4 <video src"([^http].*\.mp4)" width&q…