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);  
            }
        }
  • 相关阅读:
    原型设计 + 用户规格说明书
    第三次作业
    MathExam第二次作业
    第一次随笔
    冲鸭第一的合作
    功能规格说明书
    测试与优化
    结对编程
    高分小学计算器
    现实与梦
  • 原文地址:https://www.cnblogs.com/akiing/p/3444507.html
Copyright © 2011-2022 走看看