首页 > 其他分享 >进一步学习 CommunityToolkit.Mvvm

进一步学习 CommunityToolkit.Mvvm

时间:2023-12-18 15:45:04浏览次数:30  
标签:CommunityToolkit nameof string Mvvm Title IsEnabled private 学习 isEnabled

1. 属性绑定

private string title;

public string Title

{
    get;set;
}

 

可用以下属性方式替换,生成器会自动生成;

[ObservableProperty]
private string title;

 

另一种情况:命令

        private bool isEnabled;
        public bool IsEnabled
        {
            get => isEnabled;
            set
            {
                isEnabled = value;
                OnPropertyChanged(nameof(IsEnabled));
                //以上两句可由以下替代
                //SetProperty(ref isEnabled, value);

                ButtonClickCommand.NotifyCanExecuteChanged();
            }
        }

        public RelayCommand ButtonClickCommond { get; }
        public MainWindowViewModel()
        {
           ButtonClickCommond = new RelayCommand(() => { Debug.WriteLine("Button clicked."); Title = "good"; }, () => IsEnabled);
        }    

 

可以通过以下属性方式替换(编译器自动生成以上代码):

[ObservableProperty]
[NotifyCanExecuteChangedFor(nameof(ButtonClickCommand))]
private bool isEnabled;

 [RelayCommand(CanExecute = nameof(IsEnabled))]  //[RelayCommand(CanExecute = nameof(CanButtonClick))]
 private void ButtonClick()
 {
     Debug.WriteLine("Button clicked."); 
     Title = "good";
 }

//private bool CanButtonClick()
//{
//    return IsEnabled;
//}

异步命令:

 

        [RelayCommand(CanExecute = nameof(IsEnabled))]
        private async Task ButtonClickAsync()//会自动将当前按钮设置CanExecute 设置为False退出时设置回True
        {
            await Task.Delay(1000);
            Title = "good";
        }

 

 

2. xaml 内容为

绑定上下文:

d:DataContext="{d:DesignInstance local:MainWindowViewModel }"

<Window.DataContext>
<local:MainWindowViewModel />
</Window.DataContext>


<StackPanel HorizontalAlignment="Center" VerticalAlignment="Center"> <TextBox Width="200" Text="{Binding Title}" /> <CheckBox Content="is Enabled" IsChecked="{Binding IsEnabled}" /> <Button Command="{Binding ButtonClickCommand}" Content="ok" /> </StackPanel>

 3. 命令正在执行中:Command.IsRunning, Mode=OneWay(状态只读)

            <CheckBox
                VerticalContentAlignment="Center"
                Content="Is Running"
                IsChecked="{Binding ButtonClickCommand.IsRunning, Mode=OneWay}" />

4. 当一个属性改变时同时通知另外一个变量也发生改变:NotifyPropertyChangedFor

        [ObservableProperty]
        [NotifyPropertyChangedFor(nameof(Caption))]
        private string title = "hello world";
        public string Caption => $"Title:{Title}";

 

5. 让 .NET Framework 下可以使用源生成器的方法:

方法一:

先创建.net6框架wpf项目,然后修改

双击项目修改TargetFramework,修改LangVersion8.0以上即可:

<TargetFramework>net472</TargetFramework>
<LangVersion>10.0</LangVersion>

方法二:

将.csproj 文件升级为.net6项目文件

方法三:

另外创建一个.net standard2.0的类库,通过这个类库中去使用,然后在主项目中应用类库中的数据

 

 

 

官方文档:https://learn.microsoft.com/zh-cn/dotnet/communitytoolkit/mvvm

 

标签:CommunityToolkit,nameof,string,Mvvm,Title,IsEnabled,private,学习,isEnabled
From: https://www.cnblogs.com/chao-ye/p/17878902.html

相关文章

  • 进一步学习 CommunityToolkit.Mvvm 之 Messenger
    一、带token1.订阅消息WeakReferenceMessenger.Default.Register<UserMessage,string>(this,"MyToken",(r,m)=>{});2.发送消息WeakReferenceMessenger.Default.Send(newUserMessage(value),"MyToken");二、某一种数据类型发送接收消息1.订阅消息V......
  • Spring Boot学习随笔- JSP小项目-员工管理系统(验证码生成、增删改查)
    学习视频:【编程不良人】2021年SpringBoot最新最全教程第十章、项目开发实现一个登录注册,增删改查功能的系统10.1项目开发流程需求分析分析用户主要需求提取项目核心功能,根据核心功能构建页面原型库表设计:分析系统有哪些表分析表之间关联关系确定字段详细设......
  • NoSQL学习第二天:深入理解与实战体验
    经过昨天的学习,我对NoSQL数据库有了初步的了解。今天,我进一步深入学习了NoSQL数据库的原理、特点和实际应用,收获颇丰。一、NoSQL数据库原理与技术在深入学习中,我了解到NoSQL数据库的原理主要包括数据模型、存储引擎、索引和查询优化等方面。NoSQL数据库的数据模型灵活多变,可以适应......
  • 根据实体之间的关系设计表数据,学习总结
    一、当实体间的关系是1:1的关系时:学生对学生信息例:学生——学号;学生——姓名;学生——学籍当实体“学生”和其他实体都是1对1的关系,设计表可直接创建单张表即可学生表:学号PK(主键),学生姓名,学籍…… 二、当实体间的关系是1:n的关系时:班级对学生例:班级——班级号,班级——班级......
  • 数据持久层框架mybatis学习:使用mybatis+SpringBoot完成增删改查
    目录一、MyBatis的应用配置二、使用mybatis+SpringBoot完成增删改查2.1代码实现2.2增删改查接口调用一、MyBatis的应用配置依赖pom.xml注意:版本号的依赖冲突问题<?xmlversion="1.0"encoding="UTF-8"?><projectxmlns="http://maven.apache.org/POM/4.0.0"xm......
  • 【机器学习】OpenCV人脸识别
    OpenCv基础函数#读取图片image=cv2.imread("test01.jpg")#转灰度gray_image=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)#修改尺寸resize_image=cv2.resize(image,(300,400))#绘制矩形cv2.rectangle(image,(x,y),(x+width,y+height),(0,255,0),2)#......
  • Oceanbase部分参数学习与验证
    Oceanbase部分参数学习与验证字符集等参数查看yuminstallobclient-y然后使用客户端连接:obclient-h172.24.110.175-P2881-uroot-p'Testxxxx'-Doceanbase-Amysql方式连接:mysql-h127.0.0.1-P2881-pTestxxxx#查看字符集:mysql>showvariableslike'%chara......
  • 神经网络优化篇:机器学习基础(Basic Recipe for Machine Learning)
    机器学习基础下图就是在训练神经网络用到的基本方法:(尝试这些方法,可能有用,可能没用)这是在训练神经网络时用到地基本方法,初始模型训练完成后,首先要知道算法的偏差高不高,如果偏差较高,试着评估训练集或训练数据的性能。如果偏差的确很高,甚至无法拟合训练集,那么要做的就是选择一个新......
  • 周易学习记录-杂记
    周易学习记录-杂记 四柱八字:生辰八字,简称八字,是指一个人出生时的干支历日期;年、月、日、时,共四柱干支,每柱两字,合共八个字,故称“四柱八字”。  参考资料:生辰八字四柱八字知识详解......
  • SpringIOC和AOP机制的学习
    SpringIOC和AOP机制的学习5、HelloSpring_哔哩哔哩_bilibilispringIOC依赖code-block直接导入mvc依赖也可以<dependency><groupId>org.springframework</groupId><artifactId>spring-webmvc</artifactId><......