024 . WPF MVVM类封装优化

随着我们mvvm绑定的功能越来越复杂,前面封装的简易mvvm类已经无法满足我们的需求,本节将对mvvm类进行升级,增加计算属性通知

优化后的mvvm通知类

cs 复制代码
    public class ObservableObject : INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        protected virtual void OnPropertyChanged([CallerMemberName] string propertyName = null)
        {
            PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(propertyName));
        }

        protected bool SetProperty<T>(ref T storage, T value, [CallerMemberName] string propertyName = null)
        {
            if (Equals(storage, value))
            {
                return false;
            }

            storage = value;
            OnPropertyChanged(propertyName);
            return true;
        }
    }

写一个计算类

cs 复制代码
public class Rest_NGW
 {
     public double rest_key1(int i)
     {
         return 0.5;
     }
 }

在数据类中,list属性改变时,调用计算类来刷新test属性的值

cs 复制代码
  public class NGW_Modle : ObservableObject
 {
     Rest_NGW rest_NGW = new Rest_NGW();//计算类


     private int i_list;

		public int I_list
		{
get { return i_list; }
         set
         {
             if (SetProperty(ref i_list, value))
             {
                Test = rest_NGW.rest_key1(i_list);//更新Test属性的值
             }
         }
     }

     private double test;

     public double Test
     {
         get { return test; }
         set
         {
             if (SetProperty(ref test, value))
             {

             }
         }
     }




 }
相关推荐
淡海水9 小时前
02-07-原理篇-GC暂停时间的本质
开发语言·unity·c#·gc·暂停时间
小羊没烦恼!11 小时前
OS X 上使用.NET开发应用程序
开发语言·前端·数据库·人工智能·c#·策略模式
Behavior12 小时前
Unity 7.0 Alpha 拆解:编辑器干掉 Mono 换 CoreCLR
c#·unity3d·游戏开发
淡海水13 小时前
02-06-原理篇-增量式GC与并发GC
算法·unity·c#·并发·gc·增量
Vertira13 小时前
C# 函数封装成 DLL,
开发语言·c#
浅尝辄止;14 小时前
设计模式在HIS/LIS医疗系统中的完整实践指南(C#版)
开发语言·设计模式·c#
kimloner1 天前
开源一个 376KB 的 Windows 桌面小工具:便签 + 截图标注 + OCR + 待办提醒(C# / WinForms)
windows·开源·c#·ocr·winforms
阿松爱学习1 天前
【Unity开发】Aspose.PDF的使用
unity·pdf·c#
半亩码田1 天前
C#转Python第4.8篇:正则表达式:Python re 模块 vs C# System.Text.RegularExpressions
python·正则表达式·c#
FPGA小徐1 天前
【一生一芯 / PA】异常响应机制:RISC-V 中 ecall → mtvec → mret 的完整代
开发语言·数据库·c#