【wpf】神器Fody简化属性通知 INotifyPropertyChanged
前言
前文中
【WPF绑定2】 INotifyPropertyChanged Or 依赖属性_code bean的博客-CSDN博客_wpf 通知属性
介绍了 INotifyPropertyChanged的使用
// 建议数据模型如果要做数据变化通知 ,使用INotifyPropertyChanged
// 使用时是需要实例化的
// DataClass dataClass=new DataClass();
public class DataClass : INotifyPropertyChanged
{
public event PropertyChangedEventHandler PropertyChanged;
private int _value;
public int Value
{
get { return _value; }
set
{
_value = value;
PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value"));
}
}
}
如果属性不多还好,如果属性多了,岂不是要写一堆的代码?此时Fody就登场了。
Fody的安装
NuGet 中搜寻Fody,找到如下包,进行安装
Fody的使用
首先再类上添加特性[AddINotifyPropertyChangedInterface]
那么该类下的所有的属性,都会被自动加上属性通知,如果你有特殊的要求,再在特定的属性上加上特殊的特性。
- AlsoNotifyFoA 实现通知的时候,同时通知其属性
- DoNotNotify 指定不需要通知相关的代码
- DependsOn 指定哪些属性变化的时候,通知当前属性变化
- DoNotCheckEquality 强制不做旧值比对(默认情况会自动添加比对代码)
具体如下代码所示:
[AddINotifyPropertyChangedInterface]
public class Data
{
/*
AlsoNotifyFoA 实现通知的时候,同时通知其属性
DoNotNotify 指定不需要通知相关的代码
DependsOn 指定哪些属性变化的时候,通知当前属性变化
DoNotCheckEquality 强制不做旧值比对(默认情况会自动添加比对代码)
*/
/// <summary>
/// 不加的情况下,做旧值比对后通知
/// </summary>
public int LinkCount { get; set; } = 0;
public int ErrCount { get; set; } = 0;
public int Count { get; set; } = 0;
#region 举例说明
/// <summary>
/// DoNotNotify 指定不需要通知相关的代码
/// </summary>
[DoNotNotify]
public int Test { get; set; }
/// <summary>
/// DependsOn 指定哪些属性变化的时候,通知当前属性变化
/// 及当属性Test发生变化时,Test1触发属性通知
/// </summary>
[DependsOn("Test")]
public int Test1 { get; set; }
/// <summary>
/// 实现通知的时候,同时通知其属性
/// Test2实现通知的时候,同时通知Test
/// </summary>
[AlsoNotifyFor("Test")]
public int Test2 { get; set; }
/// <summary>
/// DoNotCheckEquality 强制不做旧值比对(默认情况会自动添加比对代码,即数值没有发生改变时不通知)
/// 加上后只要有个属性访问就会通知,不管值是否变化
/// </summary>
[DoNotCheckEquality]
public int Test3 { get; set; }
#endregion
}
之后加入MVVM框架之后,应该可以替代掉Fody。
作者:宋桓公
出处:http://www.cnblogs.com/douzi2/
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· 写一个简单的SQL生成工具
2021-08-12 C# 实现数组深拷贝的一种标准方法