码迷,mamicode.com
首页 > 其他好文 > 详细

ICommand.CanExecuteChanged事件订阅对象的变化

时间:2015-01-30 01:22:55      阅读:93      评论:0      收藏:0      [点我收藏+]

标签:

 

 

 public class DelegateCommand : ICommand
    {
        Func<object, bool> canExecute;
        Action<object> executeAction;
        bool canExecuteCache;
        #region 构造函数
        public DelegateCommand()
            : this(null, null)
        {
        }

        public DelegateCommand(Action<object> executeAction, Func<object, bool> canExecute)
        {
            this.executeAction = executeAction;
            this.canExecute = canExecute;

        }
        #endregion

        #region get-set

        public Func<object, bool> CanExecuteEx
        {
            get { return canExecute; }
            set { canExecute = value; }
        }

        public Action<object> ExecuteActionEx
        {
            get { return executeAction; }
            set { executeAction = value; }
        }

        #endregion

        #region ICommand Members

        public bool CanExecute(object parameter)
        {
            if (canExecute == null) return true;
            bool temp = canExecute(parameter);

            if (canExecuteCache != temp)
            {
                canExecuteCache = temp; 
            }

            return canExecuteCache;
        }

        //public event EventHandler CanExecuteChanged;

        public void Execute(object parameter)
        {
            if (executeAction == null) return;
            executeAction(parameter);
        }
        public event EventHandler CanExecuteChanged
        {
            add { CommandManager.RequerySuggested += value; }
            remove { CommandManager.RequerySuggested -= value; }
        }
        #endregion
    }

  

ICommand.CanExecuteChanged事件订阅对象的变化

标签:

原文地址:http://www.cnblogs.com/qq247039968/p/4261345.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!