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

 

本系列文章导航
  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#编程中的析构函数用法 什么是析构函数? 析构函数(Destructor)是C#的一个重要特性,可以在对象被销毁之前执行某些操作,比如释放对象使用的资源等,该函数在类中只能有一个,无返回值类型和参数列表。 析构函数使用场景 析构函数通常用于释放由类对象分配的资源,例如在构造函数中申请一段内存,并在析构函数中释放。以确保内存能够被及时释放,从而避免内…

    C# 2023年5月31日
    00
  • C#使用linq对数组进行筛选排序的方法

    下面是“C#使用linq对数组进行筛选排序的方法”的完整攻略。 1. 筛选数组 使用linq对数组进行筛选的方式有很多,下面介绍几种比较常用的方法。 1.1. Where 使用Where方法可以对数组进行筛选,例如筛选出数组中大于等于10的元素,可以这样写: int[] arr = { 1, 5, 8, 10, 13, 15 }; var filteredA…

    C# 2023年6月1日
    00
  • 使用VS2010 C#开发ActiveX控件(上)

    使用VS2010 C#开发ActiveX控件是一种常见的开发技术,其基本过程包括以下几个步骤: 1. 创建ActiveX控件项目 打开Visual Studio 2010,选择“新建项目” -> “Visual C#” -> “Windows桌面” -> “ActiveX控件”,输入项目名称和保存位置,点击“确定”创建项目。 2. 设计控件…

    C# 2023年5月15日
    00
  • C#实现将DataTable内容输出到Excel表格的方法

    下面是关于“C#实现将DataTable内容输出到Excel表格的方法”的完整攻略。 1.准备工作 在使用C#实现将DataTable内容输出到Excel表格之前,你需要安装一个Excel操作库,常用的有EPPlus和NPOI。 在本攻略中,我们将使用EPPlus作为Excel操作库,您可以通过NuGet包管理器来安装该库。 2.添加引用 安装完成后,我们需…

    C# 2023年5月31日
    00
  • C#与C++枚举的区别对比和使用案例

    C#与C++枚举的区别对比和使用案例 枚举在C#和C++的基本定义 C#和C++中的枚举都是一组具有相同数据类型的常量。枚举定义的基本语法如下: C#: enum 枚举名称 { 枚举常量1, 枚举常量2, … } C++: enum 枚举名称 { 枚举常量1, 枚举常量2, … }; 在定义枚举时,常量的默认值从0开始自动递增。也可以给特定的枚举常量…

    C# 2023年5月15日
    00
  • C#中时间类的使用方法详解

    C#中时间类的使用方法详解 C#中有很多时间类,但最常用的是 DateTime 类,它可以表示一个特定的日期和时间。以下是 DateTime 类的使用方法的详细攻略。 DateTime 类的构造函数 DateTime 类有多个构造函数,其中一些最重要的构造函数如下所示: DateTime(): 创建一个 DateTime 对象,它的值是当前日期和时间。 Da…

    C# 2023年5月31日
    00
  • asp.net(C#) 动态添加非ASP的标准html控件(如添加Script标签)

    在asp.net中,动态添加非ASP的标准html控件可以通过代码生成的方式实现。在代码中,可以通过使用System.Web.UI.HtmlControls.HtmlGenericControl类实例化一个具有特定标记名称(如 script )的html控件,并设置其属性等具体信息,然后将该控件添加到asp.net页面中。 以下是完整攻略: 在代码中实例化特…

    C# 2023年6月3日
    00
  • C# 游戏外挂实现核心代码

    C# 游戏外挂实现核心代码,通常包含以下几个步骤: 1. 找到游戏内存地址 首先需要找到游戏内存地址,这通常需要使用一些常见的内存查找技术,例如静态地址查找、动态地址查找等等。找到游戏内存地址之后,我们就可以通过读写内存操作实现对游戏数据的修改和访问。 2. 代码注入 代码注入是指将自己编写的代码注入到游戏进程中,从而实现对游戏的控制。这可以通过使用一些第三…

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