首页 > 其他分享 >wpf CommunityToolkit.Mvvm8.1 MVVM工具包安装引用指南

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

时间:2023-04-08 22:55:47浏览次数:41  
标签:Task MVVM Title Mvvm8.1 命令 CommunityToolkit ObservableProperty 属性

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

 

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

 

特别提示:不要再安装下面这2个旧版本的包了,官方都提示过期了,推荐用CommunityToolkit.Mvvm8.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 }

 

标签:Task,MVVM,Title,Mvvm8.1,命令,CommunityToolkit,ObservableProperty,属性
From: https://www.cnblogs.com/aierong/p/17299452.html

相关文章

  • WPF MVVM模式简介
    WPF是WindowsPresentationFoundation的缩写,它是一种用于创建桌面应用程序的用户界面框架。WPF支持多种开发模式,其中一种叫做MVVM(Model-View-ViewModel)。什么是MVVM?MVVM是一种软件架构模式,它将应用程序分为三个层次:Model(模型),View(视图)和ViewModel(视图模型)。Model表示应用程序的......
  • 谈谈你对MVVM的理解?
    MVVM即Model、View、ViewModelModel数据层负责数据的定义以及业务逻辑等操作,对应到Vue组件中就是script部分而View则可以理解为我们打开浏览器所看到的页面,对应到Vue组件中就是templateViewModel可以理解为一个衔接Model和View之间的桥梁,主要功能就是实现Model和View之间的同步......
  • MVC、MVP、MVVM ?
    MVC、MVP、MVVM这些模式是为了解决开发过程中的实际问题而提出来的,目前作为主流的几种架构模式而被广泛使用。MVC、MVP、MVVM三者特点MVC(同步通信为主):Model、View、ControllerMVP(异步通信为主):Model、View、PresenterMVVM(异步通信为主):Model、View、ViewModel什么是......
  • MVVM
    MVVM是vue实现数据驱动视图和双向数据绑定的核心原理。MVVM指的是Model、View、ViewModel,它把每个HTML页面都拆分成了这三个部分,如图所示:  在MVVM概念中:Model表示当前页面渲染时所依赖的数据源。View表示当前页面所渲染的Dom结构。ViewModel表示vue的实例,它是MVVM的核心。......
  • MVVM——源生成器
    MVVM是区别去之前的MVC方式,我个人感觉是他的一个升级Model --------  modelView-------View解释了将界面和模型分离的思想,这种思想的好处就是可以将界面和控制......
  • WPF 在 MVVM 模式下实现窗口后台代码与ViewModel交互
    在WPFMVVM模式中,UI层基本上与ViewModel通过依赖属性和命令绑定交互。有时候互联网上提供的第三方控件不支持绑定,只能在后台代码中赋值和更新,如何在MVVM模式中对这种......
  • MVVM模式和第一个Vue程序
    Vue:MVVM模式和第一个Vue程序什么是MVVM​ MVVM(Model-View-ViewModel)是一种软件架构设计模式,由微软WPF(用于替代WinForm,以前就是用这个技术开发桌面应用程序的)和Silv......
  • 什么是mvc,什么是mvvm?有什么区别?
    1.MVCMVC是ModelViewController的缩写Model:模型层,是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。View:......
  • MVVM - Commands, RelayCommands and EventToCommand
    MVVM-Commands,RelayCommandsandEventToCommand|MicrosoftLearnBy LaurentBugnion |May2013In previousinstallmentsofthisseries,Idescribedthei......
  • MVC、MVVM框架
    MVC简要如果你做过iOS开发,相信你对这几个东西一定很熟:Model、View、Controller,分别表示数据、视图、控制器。当然,其他方向的开发人员应该不也会太陌生,其实这只是一种设计思......