千家信息网

如何实现mvvmlight与icommand类

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,小编给大家分享一下如何实现mvvmlight与icommand类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先建一个实现
千家信息网最后更新 2025年01月18日如何实现mvvmlight与icommand类

小编给大家分享一下如何实现mvvmlight与icommand类,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!

先建一个实现了ICommand接口的类

public class RelayCommand : ICommand    {        private Action _execute;        private Predicate _canExecute;        public RelayCommand(Action execute, Predicate canExecute)        {            this._execute = execute;            this._canExecute = canExecute;        }        public event EventHandler CanExecuteChanged        {            add            {                CommandManager.RequerySuggested += value;            }            remove            {                CommandManager.RequerySuggested -= value;            }        }        public bool CanExecute(object parameter)        {            return _canExecute(parameter);        }        public void Execute(object parameter)        {            _execute(parameter);        }    }

在viewmodel中添加

void UpdateExecute()        {            Console.WriteLine("ICommandExecute");        }        bool CanUpdateExecute()        {            return true;        }        private ICommand _doSomething;        public ICommand DoSomething        {            get            {                if (_doSomething == null)                {                    _doSomething = new RelayCommand(p => this.UpdateExecute(), p => this.CanUpdateExecute());                }                return _doSomething;            }        }

在xaml中用Command来绑定
假设我们用的是RadioButton

注意:

Binding DataContext.DoSomething

这里要用DataContext.
然后要设置一下RelativeSource
不然找不到这个方法会输出错误信息

以上是"如何实现mvvmlight与icommand类"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

0