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

             }
         }
     }




 }
相关推荐
淡海水12 小时前
13-04-面试-源码级深度追问链
数据结构·unity·面试·c#·游戏引擎·源码·il2cpp
asdzx6713 小时前
如何使用 C# 提取 PPT 文本与图片
c#·ppt·提取文本
2501_9307077819 小时前
使用C#代码使用条件格式为 Excel 隔行设置颜色
c#·excel
何以解忧唯有撸码1 天前
【开源】c#造个轮子-日程安排工具
c#·自定义控件
周杰伦fans1 天前
CAD菜单栏和工具栏都不见了,怎么显示?
其他·c#
曹牧1 天前
C#:HashSet<T> 去重
c#
czhc11400756631 天前
起点、口径与因果:今天用错的七把尺子
c#
c#上位机2 天前
C#上位机项目实战——Task.Run执行带参数的方法
c#·上位机
Lost of 程序猿2 天前
用 YARP 为 .NET 微服务搭一座“立交桥“:路由转发与生产配置实践
c#·asp.net