资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

mvvm框架中icommand的用法-创新互联

本文将为大家详细介绍mvvm框架中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
不然找不到这个方法会输出错误信息

关于ICommand接口类的实现就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

另外有需要云服务器可以了解下创新互联cdcxhl.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:mvvm框架中icommand的用法-创新互联
地址分享:http://cdkjz.cn/article/iihio.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220