初学ICommand接口,UI响应在viewmodel中实现

    初学WPF,数据绑定会了一些,但是Command为何物还是不太明白。今天晚上研究了一下,写了一个小Demo和初学者们分享!懂的人可以直接略过了~

    1 。新建WPF项目,在mainwindow中添加button1。

    2 .   新建类MyCommand.cs,定义我们的command。

    3.    新建类MainWindowViewModel.cs,定义我们的viewmodel层。

class MyCommand : ICommand
    {
        readonly Action _execute;
        readonly Func<bool> _canExecute;


        public MyCommand(Action execute)
            : this(execute, null)
        {
        }


        public MyCommand(Action execute, Func<bool> canExecute)
        {
            if (execute == null)
                throw new ArgumentNullException("execute");


            _execute = execute;
            _canExecute = canExecute;
        }
        public bool CanExecute(object parameter)
        {
            return _canExecute == null ? true : _canExecute();
        }
        public void Execute(object parameter)
        {
            _execute();
        }
        public event EventHandler CanExecuteChanged
        {
            add
            {
                if (_canExecute != null)
                    CommandManager.RequerySuggested += value;
            }
            remove
            {
                if (_canExecute != null)
                    CommandManager.RequerySuggested -= value;
            }
        }
    }

    4.    在主界面UI中将button1的数据源绑定到MainWindowViewModel的一个新实例。

class MainWindowViewModel
    {
        ICommand _buttoncommand;
        public ICommand ButtonCommand
        {


            get
            {
                if (this._buttoncommand == null)
                {
                    this._buttoncommand = new MyCommand(() =>
                    {
                        MessageBox.Show("My First Command!");
                    });
                }


                return this._buttoncommand;
            }
        }
    }

    5.    button1的xaml语言下加入此属性:Command="{Binding ButtonCommand}"

运行,点击button,显示出我要的"My First Command!"。成功!

demo下载地址:http://download.csdn.net/detail/conganguo/7404985

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赫曦

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值