CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南(1)

yizhihongxing

 

本系列文章导航
  1. https://www.cnblogs.com/aierong/category/2297596.html

 

 

0.说明

CommunityToolkit.Mvvm包(又名MVVM 工具包,以前名为 Microsoft.Toolkit.Mvvm)是一个现代、快速且模块化的 MVVM 库。
它支持:.NET Standard 2.0、 .NET Standard 2.1 和 .NET 6(UI Framework 不支持)

 

文档地址:
https://learn.microsoft.com/zh-cn/dotnet/communitytoolkit/mvvm/
github:
https://github.com/CommunityToolkit/dotnet

 

自我Demo地址:
https://github.com/aierong/WpfDemo/

 

包说明:

CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南(1)

 

 

 

1.安装
nuget中安装:CommunityToolkit.Mvvm

 

特别提示:不要再安装下面这2个旧版本的包了,官方都提示过期了,推荐用CommunityToolkit.Mvvm8.1

CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南(1)

 

 

2.使用

CommunityToolkit.Mvvm8.1最令人惊喜的是它提供的源生成器功能,它极大简化我们的mvvm代码

后面会整理一个系列文字逐一说明,下面先简单感受一下:

 

大部分通过标记一个属性就可以实现某个功能,这个很方便快捷,推荐

常用的总结
1.继承ObservableObject 并且类标记是分部类partial
2.私有变量标记属性 [ObservableProperty]
3.NotifyCanExecuteChangedFor 通知依赖命令
   NotifyPropertyChangedFor 通知依赖属性
4.RelayCommand 定义命令
5.OnPropertyChanged 手动通知属性更新
6.ButtonClickCommand.NotifyCanExecuteChanged() 手动通知命令更新
7.OnLastNameChanging OnLastNameChanged 某个属性改变
8.OnPropertyChanged 所有属性改变

定义viewmodel
1 public partial class DataViewModel2 : ObservableObject
2 {
3 
4 }

 

ObservableProperty标记属性
1 /*
2 [ObservableProperty]标记后,会自动生成属性(大写命名),例如:下面会自动生成Title
3 
4 注意:这个私有变量命名:必须是小写开头,或者下划线,或者m_
5 */
6 
7 [ObservableProperty]
8 private string title = "hello";

 

NotifyPropertyChangedFor通知依赖属性
 1 public string Caption
 2 {
 3     get
 4     {
 5         return string.Format( "Title:{0}-{1}" , Title , LastName );
 6     }
 7 }
 8 
 9 
10 [ObservableProperty]
11 [NotifyPropertyChangedFor( nameof( Caption ) )]
12 private string lastName = "abc";

 

NotifyCanExecuteChangedFor通知依赖命令
1 /*
2         [NotifyCanExecuteChangedFor( nameof( ButtonClickCommand ) )]
3 NotifyCanExecuteChangedFor是通知依赖命令(触发命令),相当于set中ButtonClickCommand.NotifyCanExecuteChanged();
4 */
5 
6 [ObservableProperty]
7 [NotifyCanExecuteChangedFor( nameof( ButtonClickCommand ) )]
8 private bool isEnabled = false;

 

命令
 1 /*
 2 RelayCommand是定义命令,自动生成的命令名是方法名+Command,并且初始化
 3 例如:下面的会自动生成ButtonClickCommand
 4 
 5 CanExecute是指定一个判断方法,判断是否可用
 6 */
 7 
 8 [RelayCommand( CanExecute = nameof( CanButton ) )]
 9 void ButtonClick ()
10 {
11     //点击按钮,修改标题
12     Title = "hello(改)";
13 }
14 
15 bool CanButton ()
16 {
17     return IsEnabled;
18 }

 

异步命令
 1 [RelayCommand]
 2 async Task AsyncButtonClick ()
 3 {
 4     await Task.Delay( 4800 );
 5     Title = "hello(Task改)";
 6 }
 7 
 8 
 9 
10 [RelayCommand]
11 async Task AsyncButtonParClick ( double val )
12 {
13     await Task.Delay( 4800 );
14     Title = $"hello(Task改):{val}";
15 }

 

原文链接:https://www.cnblogs.com/aierong/p/17299452.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南(1) - Python技术站

(0)
上一篇 2023年4月18日
下一篇 2023年4月18日

相关文章

  • C#中各种泛型集合的使用方法总结

    下面是一份“C#中各种泛型集合的使用方法总结”的完整攻略。 1. 概述 在C#中,泛型集合是非常常用的数据结构,它们可以帮助我们有效地管理和操作我们的数据,提高我们的开发效率。常用的泛型集合包括List、Dictionary、Queue、Stack等等。在本文中,我们将对这些常用的泛型集合进行总结和介绍。 2. List 2.1 简介 List是我们最常用的…

    C# 2023年5月15日
    00
  • C# 压榨cpu的办法(推荐)

    下面是” C# 压榨cpu的办法(推荐) “的完整攻略: 概述 在一些需要高性能的场景下,我们需要在C#代码中尽可能地提高程序的CPU利用率。通过使用一些技巧可以让我们的程序充分利用CPU资源,提高性能。 如何压榨CPU 下面我们介绍一些压榨CPU的办法: 1. 紧密计算 紧密计算是一种流程控制的方式,其目的是在尽量少的时间内进行更多的计算,从而提高CPU的…

    C# 2023年6月6日
    00
  • C#实现根据实体类自动创建数据库表

    下面是 “C#实现根据实体类自动创建数据库表” 的完整攻略: 1. 实现方式 C#语言使用ORM框架可以方便地实现这个功能,其中EF (Entity Framework) 是比较常用的ORM框架之一,其核心功能是将数据库表映射到实体类上,从而实现面向对象的操作。 具体实现方式如下: 首先,需要定义一个实体类,用于描述需要存储到数据库中的实体属性。 示例: p…

    C# 2023年6月1日
    00
  • C#WinForm实现多语言切换的示例

    对于C# WinForm实现多语言切换,以下是完整攻略: 1. 准备工作 首先要在项目中添加多语言资源文件,以便在程序中能够进行语言切换。具体步骤为: 在项目中右键,选择“添加” -> “新建项”; 在弹出的窗口中选择“资源文件”; 命名资源文件,例如Resources.zh-cn.resx,其中“.zh-cn”代表中文简体资源,如果需要支持其他语言可…

    C# 2023年6月1日
    00
  • C# File.GetAttributes(string path):获取指定文件或目录的属性

    File.GetAttributes(string path) 方法的作用是获取指定路径上的文件或目录的属性。 其使用方法的完整攻略如下: 1. 导入命名空间 在使用该方法之前,需要先导入 System.IO 命名空间,因为此方法是定义在 System.IO.File 类中的静态方法。 using System.IO; 2. 参数说明 该方法的参数 path…

    C# 2023年4月19日
    00
  • C#实现的上传图片、保存图片、加水印、生成缩略图功能示例

    下面就是详细讲解“C#实现的上传图片、保存图片、加水印、生成缩略图功能示例”的完整攻略。 前言 在网站的开发过程中,图片处理是非常重要的一环。在C#语言中,我们可以利用System.Drawing命名空间中的类和方法来实现上传图片、保存图片、加水印、生成缩略图等功能。下面将分别对这几个功能进行详细介绍。 上传图片 在C#中,可以利用System.Web命名空…

    C# 2023年6月1日
    00
  • 部署.NET6项目到IIS

    部署.NET6项目到IIS .NET 6是一个跨平台的开源框架,它可以帮助我们构建高性能的Web应用程序。IIS是一个Web服务器,它可以帮助我们部署和托管Web应用程序。本攻略将详细介绍如何将.NET 6项目部署到IIS。 环境要求 在进行.NET 6项目部署到IIS时,我们需要满足以下环境要求: .NET 6 SDK IIS 创建.NET 6项目 我们可…

    C# 2023年5月17日
    00
  • 如何实现定时推送的具体方案

    要实现定时推送,我们可以借助第三方定时任务框架,例如node-schedule、cron等。 安装定时任务框架node-schedule 我们可以在项目目录下执行以下命令安装node-schedule: npm install node-schedule 编写定时推送代码 在项目代码中引入node-schedule框架,使用框架提供的scheduleJob(…

    C# 2023年6月6日
    00
合作推广
合作推广
分享本页
返回顶部