有关WPF的一些事

news/2024/5/19 23:33:57/

RaisePropertyChanged和OnPropertyChanged的区别

WPF中,数据绑定是实现MVVM模式的关键。在数据绑定的过程中,我们需要在数据发生变化时及时通知UI更新。为了实现这个功能,WPF提供了两个重要的方法:WPFRaisePropertyChanged和OnPropertyChanged。

WPFRaisePropertyChanged是一种手动触发属性更改事件的方法。当属性的值发生变化时,我们需要调用此方法通知UI更新。在ViewModel中使用此方法时,我们需要传递属性的名称作为参数。例如:

private string _name;
public string Name
{get { return _name; }set{if (_name != value){_name = value;WPFRaisePropertyChanged("Name");}}
}

OnPropertyChanged是一种基于委托的自动触发属性更改事件的方法。当属性的值发生变化时,我们可以通过定义一个PropertyChangedEventHandler委托类型的事件来自动触发属性更改事件。例如:

public event PropertyChangedEventHandler PropertyChanged;
private string _name;
public string Name
{get { return _name; }set{if (_name != value){_name = value;PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Name"));}}
}

在使用OnPropertyChanged时,我们需要先定义一个PropertyChangedEventHandler委托类型的事件,并在属性发生变化时调用该事件即可。

总的来说,WPFRaisePropertyChanged是一种手动触发属性更改事件的方法,而OnPropertyChanged是一种基于委托的自动触发属性更改事件的方法。在MVVM模式中,我们通常使用OnPropertyChanged来实现属性更改事件的自动触发。

属性绑定bool值区反

在WPF的绑定中,有时会用到属性值为True时不选中,或者不启用,这时就需要用到Bool取反.

我们可以使用Converter来实现Bool值的取反。下面是一个简单的例子:

首先,在XAML中定义一个BooleanToInverseBooleanConverter:

<Window.Resources><local:BooleanToInverseBooleanConverter x:Key="BooleanToInverseBooleanConverter"/>
</Window.Resources>

然后,在绑定时使用该转换器:

<CheckBox IsChecked="{Binding IsSelected, Converter={StaticResource BooleanToInverseBooleanConverter}}"/>

最后,在C#中实现BooleanToInverseBooleanConverter:

public class BooleanToInverseBooleanConverter : IValueConverter
{public object Convert(object value, Type targetType, object parameter, CultureInfo culture){if (value is bool b){return !b;}return value;}public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture){if (value is bool b){return !b;}return value;}
}

这个转换器将bool值转换为相反的bool值。在上面的例子中,当IsSelected属性为true时,CheckBox将处于选中状态,而当IsSelected属性为false时,CheckBox将处于未选中状态。

本文介绍了WPF中数据绑定的两个重要方法:WPFRaisePropertyChanged和OnPropertyChanged。前者是手动触发属性更改事件的方法,后者是基于委托的自动触发属性更改事件的方法。此外,本文还介绍了如何使用转换器实现bool值的取反,以及在WPF绑定中如何使用该转换器。需要的小伙伴学起来吧,有任何疑问可以给我留言!~


http://www.ppmy.cn/news/46820.html

相关文章

逆向-还原代码之(*point)[4]和char *point[4] (Interl 32)

// source code #include <stdio.h> #include <string.h> #include <stdlib.h> /* * char (*point)[4] // 数组指针。 a[3][4] // 先申明二维数组,用它来指向这个二维数组 * char *point[4] // 指针数组。 a[4][5] // 一连串的指针…

flac格式如何转换为mp3,这3个方法超好用

随着音频格式的不断创新和发展&#xff0c;每种格式对应不同的特点。比如像flac格式可以提供无损音质的体验&#xff0c;但它的文件大小却是相对较大&#xff0c;不太适合在普通设备上进行传输和使用。而mp3作为一种流行的音频格式&#xff0c;它的压缩率较高&#xff0c;不但可…

mysql安装(1)

下载软件包 解压tar -zxvf mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz mv mysql-5.7.28-linux-glibc2.12-x86_64 /usr/local/mysql 创建相关目录 mkdir /home/storage/mysql_3306/data logs run tmp 创建用户 groupadd mysql useradd -r -g mysql -s /bin/false mysql 修…

病毒丨3601lpk劫持病毒分析

作者&#xff1a;黑蛋 一、病毒简介 文件名称&#xff1a; 1f3e836b4677a6df2c2d34d3c6413df2c5e448b5bc1d5702f2a96a7f6ca0d7fb 文件类型(Magic)&#xff1a; PE32 executable (GUI) Intel 80386, for MS Windows 文件大小&#xff1a; 52.50KB SHA256&#xff1a; 1f3e836b4…

以 Wow 插件抛砖引玉,如何进行简单的游戏翻译工作

文章目录 前情提要WA例子翻译思路1. 找到需要翻译的关键信息2. 如果需要的话&#xff0c;先机翻减少工作量3. 人工核对检查和修改 结果展示 前情提要 魔兽世界美服10.1更新在即&#xff0c;刚刚来到美服的朋友需要用到一些插件&#xff0c;很多是没有汉化版本的&#xff0c;我…

计算机图形学 | 实验五:模型导入

计算机图形学 | 实验五&#xff1a;模型导入 计算机图形学 | 实验五&#xff1a;模型导入模型加载库AssimpAssimp简介Assimp构建 Mesh && Model 类的创建MeshModel 绘制模型 华中科技大学《计算机图形学》课程 MOOC地址&#xff1a;计算机图形学&#xff08;HUST&…

[Daimayuan] 子串的循环挪动(C++,模拟)

给出一个字符串 s s s&#xff0c;你需要执行 m m m 个任务。每个任务给出两个下标 l i , r i l_i,r_i li​,ri​ 和一个整数 k i k_i ki​&#xff08;字符串的下标从 1 1 1 开始&#xff09;&#xff0c;表示你需要循环挪动 s s s 的子串 s [ l i . . . r i ] k i s[l…

生产制造企业如何建立适合自身的数字化工厂,实现数字化转型?

“工业4.0”这一全新的术语受到全球的瞩目&#xff0c;它是继机械化、电气化和信息技术之后&#xff0c;以智能制造为核心的第四次工业革命。“工业4.0”最显著的特征是智能工厂的广泛普及。而智能工厂是在数字化工厂的基础上发展而来的&#xff0c;没有数字化就没有智能化。因…

无需公网IP,远程连接SQL Server数据库【内网穿透】

文章目录 1.前言2.本地安装和设置SQL Server2.1 SQL Server下载2.2 SQL Server本地连接测试2.3 Cpolar内网穿透的下载和安装2.3 Cpolar内网穿透的注册 3.本地网页发布3.1 Cpolar云端设置3.2 Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据库的重要性相信大家都有所了解&…

仿真创新大赛—国三省一 智能鱼缸(proteus)(stm32)

⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩去年下半年参加了全国仿真创新大赛&#xff0c;也是取得了国赛三等奖&#xff0c;省赛一等奖的好成绩。 ⏩本篇文章对我们的参赛作品《智能鱼缸》做一个简介。 ⏩感…

软件测试——概念篇

目录 一、软件的生命周期 二、瀑布模型&#xff08;Waterfall Model&#xff09; 优点&#xff1a; 缺点&#xff1a; 三、螺旋模型&#xff08;Spiral Model&#xff09; ​编辑优点&#xff1a; 缺点&#xff1a; 四、增量、迭代 区别&#xff1a; 五、敏捷 scrum…

滚动条如何设置样式和滚动条悬浮显示与隐藏

文章目录 一、滚动条如何设置样式1&#xff1a;滚动条的默认样式&#xff08;如下图&#xff09;1&#xff1a;html代码2&#xff1a;css代码3&#xff1a;效果图 2&#xff1a;CSS设置滚动条的属性&#xff08;重点&#xff09;3&#xff1a;设置滚动条的例子1&#xff1a;css…

【Unity+MySQL】实现注册登录系统(升级版)

目录 1 UI界面重新设计1.1 注册界面1.2 登录界面1.3 交互实现 2 注册功能完善2.1 判断用户输入的用户名是否与数据库中的重复2.2 将当前时间更新至用户表的当前注册时间列2.3 将用户输入的注册密码使用哈希加密 3 登录功能完善4 总体功能流程图 接着 上篇文章所谈到的系统缺陷…

如何招生?一文教你高职院校有效的招生技巧

生源&#xff0c;是每一所高校的生存之本和生命线。 近几年招生宣传工作作为高职院校招生工作中的重要环节之一&#xff0c;具有政策性强&#xff0c;涉及面广&#xff0c;工作量大等特点&#xff0c;直接关系到学校可持续发展问题。 随着新媒体时代的发展&#xff0c;高职院…

深度学习中的卷积神经网络

博主简介 博主是一名大二学生&#xff0c;主攻人工智能研究。感谢让我们在CSDN相遇&#xff0c;博主致力于在这里分享关于人工智能&#xff0c;c&#xff0c;Python&#xff0c;爬虫等方面知识的分享。 如果有需要的小伙伴可以关注博主&#xff0c;博主会继续更新的&#xff0c…

Mysql安装详细教程

数据库相关概念 而目前主流的关系型数据库管理系统的市场占有率排名如下&#xff1a; Oracle&#xff1a;大型的收费数据库&#xff0c;Oracle公司产品&#xff0c;价格昂贵。 MySQL&#xff1a;开源免费的中小型数据库&#xff0c;后来Sun公司收购了MySQL&#xff0c;而Oracle…

Netty Jemalloc4算法-核心数据结构图示

Netty 从4.1.52版本开始&#xff0c;其内存分配算法&#xff0c;从jemalloc3 切换到了 jemalloc4。本文给出该算法涉及的核心数据结构图示&#xff1a; 想要看懂上图, 要点如下&#xff1a; 1. 小于等于16777216字节的空间&#xff0c;从chunk(一个16M的字节数组)中分配&#…

Python第三方库安装

看见更大的Python世界 Python社区PyPI The Python Package Index PyPI: Python Package Index PSF维护的展示全球Python计算生态的主站 学会检索并利用PyPI&#xff0c;找到合适的第三方库开发程序 实例&#xff1a;开发与区块链相关的程序 第1步&#xff1a;在pypi.org…

【电动汽车充电站有序充电调度的分散式优化】基于蒙特卡诺和拉格朗日的电动汽车优化调度(分时电价调度)(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

原创文章生成器在线版-ai写作生成器

随着人工智能技术的迅猛发展&#xff0c;越来越多的人开始意识到&#xff0c;利用AI可以实现许多以前不可能想象的事情。其中&#xff0c;一种最能体现人工智能技术优势的应用就是“ai原创文章生成器”。它可以为营销从业者提供一种全新的营销推广方式。 那么&#xff0c;什么是…