|
本系列文章导航
0.说明
CommunityToolkit.Mvvm8.1有一个重大更新的功能:源生成器功能,它极大简化我们的mvvm代码
但是本篇先总结一下原写法,下篇再总结源生成器功能
1.模型定义
必须继承:ObservableObject
2.viewmodel代码实现
几个关键点:
SetProperty是给属性赋值,并且通知更改通知
ButtonClickCommand.NotifyCanExecuteChanged(); //通知命令 已经改变
RelayCommand ButtonClickCommand //定义命令- namespace WpfDemoNet6.Demo
- {
- public class DataViewModel1 : ObservableObject
- {
- private string title = "hello";
- public string Title
- {
- get
- {
- return title;
- }
- set
- {
- //title = value;
- //PropertyChanged?.Invoke( this , new PropertyChangedEventArgs( "Name" ) );
- //SetProperty 相当与设置值,并且PropertyChanged通知调用
- SetProperty( ref title , value );
- }
- }
- private bool isEnabled = false;
- /// <summary>
- /// 是否可以使用
- /// </summary>
- public bool IsEnabled
- {
- get => isEnabled;
- set
- {
- SetProperty( ref isEnabled , value );
- //通知命令 已经改变
- ButtonClickCommand.NotifyCanExecuteChanged();
- }
- }
- /// <summary>
- /// 命令
- /// </summary>
- public RelayCommand ButtonClickCommand
- {
- get;
- }
- public DataViewModel1 ()
- {
- //RelayCommand的第一个参数是命令调用语句
- // 第2个参数(可选)是否允许使用
- ButtonClickCommand = new RelayCommand( () =>
- {
- //点击按钮,修改标题
- Title = "hello(改)";
- } , () =>
- {
- return IsEnabled;
- } );
- ButtonClickCommandPar = new RelayCommand<double>( ( double val ) =>
- {
- Title = $"hello(改):{val}";
- } );
- }
- public RelayCommand<double> ButtonClickCommandPar
- {
- get;
- }
- }
- }
复制代码
3.异步命令
异步命令会自动控制控件的可见性,并且提供一个IsRunning属性可以判断异步是否完成- public DataViewModel1 ()
- {
- AsyncButtonClickCommand = new AsyncRelayCommand( RunTxtAsync );
- AsyncButtonParClickCommand = new AsyncRelayCommand<double>( RunTxtParAsync );
- }
- /*
- 特别说明:异步命令会自动控制控件的可见性,并且提供一个IsRunning属性可以判断异步是否完成
- */
- /// <summary>
- /// 命令
- /// </summary>
- public IAsyncRelayCommand AsyncButtonClickCommand
- {
- get;
- }
- private async Task RunTxtAsync ()
- {
- await Task.Delay( 4800 );
- Title = "hello(Task改)";
- }
- /// <summary>
- /// 命令(带参数的)
- /// </summary>
- public IAsyncRelayCommand<double> AsyncButtonParClickCommand
- {
- get;
- }
- private async Task RunTxtParAsync ( double val )
- {
- await Task.Delay( 4800 );
- Title = $"hello(Task改):{val}";
- }
复制代码 [code][/code]
A.Sql Server2005 Transact-SQL 新兵器学习
B.MCAD学习
C.代码阅读总结
D.ASP.NET状态管理
E.DB(数据库)
F.WAP
G.WinForm
H.Flex
我的好文推荐FlexAir开源版-全球免费多人视频聊天室,免费网络远程多人视频会议系统((Flex,Fms3联合开发))
Sql Server2005 Transact-SQL 新兵器学习总结之-总结
MS SQL数据库备份和恢复存储过程(加强版本)
sql server中分布式查询随笔(链接服务器(sp_addlinkedserver)和远程登录映射(sp_addlinkedsrvlogin)使用小总结)
ASP.NET2.0国际化/本地化应用程序的实现总结(多语言,多文化页面的实现)
WAP开发资料站(最新更新)
自定义格式字符串随笔(IFormattable,IFormatProvider,ICustomFormatter三接口的实现)
Mcad学习笔记之异步编程(AsyncCallback委托,IAsyncResult接口,BeginInvoke方法,EndInvoke方法的使用小总结)
Mcad学习笔记之通过反射调用類的方法,屬性,字段,索引器(2種方法)
Mcad学习笔记之序列化(2进制和Soap序列化)
Mcad学习笔记之委托再理解(delegate的构造器,BeginInvoke,EndInvoke,Invoke4个方法的探讨)
ASP.NET状态管理之一(概括篇)
Flex,Fms学习笔记
希望上面提到的知识对您有所提示,同时欢迎交流和指正
作者:aierong
出处:http://www.cnblogs.com/aierong
贴子以"现状"提供且没有任何担保,同时也没有授予任何权利!
本文版权归作者所有,欢迎转载!
原创技术文章和心得,转载注明出处!这也是对原创者的尊重!
来源:https://www.cnblogs.com/aierong/archive/2023/04/09/17300025.html
免责声明:由于采集信息均来自互联网,如果侵犯了您的权益,请联系我们【E-Mail:cb@itdo.tech】 我们会及时删除侵权内容,谢谢合作! |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
x
|