zoukankan      html  css  js  c++  java
  • MVVM 中 ViewModelBase和 CommandBase

     1 public class ViewModelBase : INotifyPropertyChanged , IDisposable  
     2     {
     3         public virtual string DisplayName { get; protected set; }  
     4 
     5         public event PropertyChangedEventHandler PropertyChanged;
     6 
     7         protected void OnPropertyChanged([CallerMemberName]string propertyName = null)
     8         {
     9             if (PropertyChanged != null)
    10             {
    11                 PropertyChanged(this, new PropertyChangedEventArgs(propertyName));
    12             }
    13         }
    14 
    15         public void Dispose()
    16         {
    17             this.OnDispose();
    18         }
    19 
    20         /// <summary>  
    21         /// 若支持IDisposable,请重写此方法,当被调用Dispose时会执行此方法。  
    22         /// </summary>  
    23         protected virtual void OnDispose()
    24         {
    25 
    26         }  
    27     }

     public class CommandBase : ICommand
        {
            private readonly Action<object> _command;
            private readonly Func<object, bool> _canExecute;
    
            public CommandBase(Action<object> command, Func<object, bool> canExecute)
            {
                if (command == null)
                    throw new ArgumentNullException("command");
                _canExecute = canExecute;
                _command = command;  
            }
    
            public bool CanExecute(object parameter)
            {
                if (_canExecute == null)
                    return true;
                return _canExecute(parameter); 
            }
    
    
            public event EventHandler CanExecuteChanged
            {
                add { CommandManager.RequerySuggested += value; }
                remove { CommandManager.RequerySuggested -= value; }
            }  
    
            public void Execute(object parameter)
            {
                _command(parameter);  
            }
        }
  • 相关阅读:
    Java Synchronized的用法
    静态方法中不能new内部类的实体对象
    android ViewGroup事件分发机制
    安卓设备通过USB接口读取UVC摄像头权限问题
    android View事件分发机制结论
    函数指针与指针函数以及typedef
    GeoHash
    快速排序,C语言实现
    字符串的几个算法
    ANSI C与GNU C
  • 原文地址:https://www.cnblogs.com/akiing/p/3444507.html
Copyright © 2011-2022 走看看