【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/
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。

浙公网安备 33010602011771号