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))
             {

             }
         }
     }




 }
相关推荐
泛凡(Linyongui)19 小时前
基于 CW32L010 的智能厨卫调温旋钮方案--低成本 EC21 编码旋钮全解析
单片机·嵌入式硬件·c#
暴走约伯20 小时前
【VFX工具链源码拆解 02】告别机械劳动(上):一键统改百个子粒子颜色与批量重命名
3d·unity·c#·材质
信息安全失业大专人员1 天前
每日了解一个智能体-WorkBuddy
开发语言·ai·c#·智能体
呆呆敲代码的小Y1 天前
【实战精选面试题】C# 面试题详细解答,按难易程度排序
android·java·游戏·c#·游戏开发·unity面试题·c#面试题
淡海水1 天前
09-01-内存-Unity资源生命周期全景
unity·c#·游戏引擎·.netcore·gc
椒颜皮皮虾྅1 天前
让 C# 读懂整张图:DeploySharp 驱动 PaddleOCR v4/v5/v6,打通 OCR 全流程
开发语言·人工智能·深度学习·学习·c#·ocr·cuda
昂好的day1 天前
C# 同步异步与多线程:Thread / Task / 线程池一次讲透(上篇)
开发语言·windows·c#
吃一碗粉只付一碗钱1 天前
12-给SPA友好的401和403响应
c#·状态模式
caimouse2 天前
MonoDevelop 编译用户应用程序时调用的是哪个编译器
c#
will_net2 天前
apollo 站点部署&C#接入
开发语言·c#·apollo