• 【wpf】神器Fody简化属性通知 INotifyPropertyChanged


    前言

    前文中


    【WPF绑定2】 INotifyPropertyChanged Or 依赖属性_code bean的博客-CSDN博客_wpf 通知属性

    介绍了 INotifyPropertyChanged的使用

    1. // 建议数据模型如果要做数据变化通知 ,使用INotifyPropertyChanged
    2. // 使用时是需要实例化的
    3. // DataClass dataClass=new DataClass();
    4. public class DataClass : INotifyPropertyChanged
    5. {
    6. public event PropertyChangedEventHandler PropertyChanged;
    7. private int _value;
    8. public int Value
    9. {
    10. get { return _value; }
    11. set
    12. {
    13. _value = value;
    14. PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Value"));
    15. }
    16. }
    17. }

    如果属性不多还好,如果属性多了,岂不是要写一堆的代码?此时Fody就登场了。

    Fody的安装

    NuGet 中搜寻Fody,找到如下包,进行安装

    Fody的使用

    首先再类上添加特性[AddINotifyPropertyChangedInterface]

    那么该类下的所有的属性,都会被自动加上属性通知,如果你有特殊的要求,再在特定的属性上加上特殊的特性。

    •           AlsoNotifyFoA     实现通知的时候,同时通知其属性
    •           DoNotNotify 指定不需要通知相关的代码
    •           DependsOn 指定哪些属性变化的时候,通知当前属性变化
    •           DoNotCheckEquality    强制不做旧值比对(默认情况会自动添加比对代码)

    具体如下代码所示:

    1. [AddINotifyPropertyChangedInterface]
    2. public class Data
    3. {
    4. /*
    5. AlsoNotifyFoA 实现通知的时候,同时通知其属性
    6. DoNotNotify 指定不需要通知相关的代码
    7. DependsOn 指定哪些属性变化的时候,通知当前属性变化
    8. DoNotCheckEquality 强制不做旧值比对(默认情况会自动添加比对代码)
    9. */
    10. ///
    11. /// 不加的情况下,做旧值比对后通知
    12. ///
    13. public int LinkCount { get; set; } = 0;
    14. public int ErrCount { get; set; } = 0;
    15. public int Count { get; set; } = 0;
    16. #region 举例说明
    17. ///
    18. /// DoNotNotify 指定不需要通知相关的代码
    19. ///
    20. [DoNotNotify]
    21. public int Test { get; set; }
    22. ///
    23. /// DependsOn 指定哪些属性变化的时候,通知当前属性变化
    24. /// 及当属性Test发生变化时,Test1触发属性通知
    25. ///
    26. [DependsOn("Test")]
    27. public int Test1 { get; set; }
    28. ///
    29. /// 实现通知的时候,同时通知其属性
    30. /// Test2实现通知的时候,同时通知Test
    31. ///
    32. [AlsoNotifyFor("Test")]
    33. public int Test2 { get; set; }
    34. ///
    35. /// DoNotCheckEquality 强制不做旧值比对(默认情况会自动添加比对代码,即数值没有发生改变时不通知)
    36. /// 加上后只要有个属性访问就会通知,不管值是否变化
    37. ///
    38. [DoNotCheckEquality]
    39. public int Test3 { get; set; }
    40. #endregion
    41. }

    之后加入MVVM框架之后,应该可以替代掉Fody。

  • 相关阅读:
    Unity OnGUI调试工具
    C++DAY 结构体·结构体与函数
    figma拉伸画板,导致元素变形,一键搞定
    形式化定义软件动态更新
    小程序门店自提功能,提高线上线下销售量
    转 股票触发指定价格发送到 企业微信
    Word | 简单可操作的快捷公式编号、右对齐和引用方法
    Laravel视图:构建动态用户界面的基石
    springcloudalibaba架构(4):Sentinel流控规则
    手把手教你在netty中使用TCP协议请求DNS服务器
  • 原文地址:https://blog.csdn.net/songhuangong123/article/details/126311081