博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ICommand in Silverlight
阅读量:6275 次
发布时间:2019-06-22

本文共 3095 字,大约阅读时间需要 10 分钟。

let's see an instance that is easily and  can run well

public class OpenChildWindowCommand : ICommand    {        ///         /// 当出现影响是否应执行该命令的更改时发生。        ///         public event EventHandler CanExecuteChanged;        ///         /// 定义用于确定此命令是否可以在其当前状态下执行的方法。        ///         ///         /// 
public bool CanExecute(object para) { if (para != null) { CanExecuteChanged(para, new EventArgs()); } return true; //return false; } /// /// 定义在调用此命令时调用的方法。 /// /// public void Execute(object para) { MessageBox.Show("afdafd"); } }
View Code

and in xaml

and now you click this button you will see the messagebox.

In order to understand the ICommand

let's see it

public interface ICommand    {        // Summary:        //     Occurs when changes occur that affect whether the command should execute.        event EventHandler CanExecuteChanged;        // Summary:        //     Defines the method that determines whether the command can execute in its        //     current state.        //        // Parameters:        //   parameter:        //     Data used by the command. If the command does not require data to be passed,        //     this object can be set to null.        //        // Returns:        //     true if this command can be executed; otherwise, false.        bool CanExecute(object parameter);        //        // Summary:        //     Defines the method to be called when the command is invoked.        //        // Parameters:        //   parameter:        //     Data used by the command. If the command does not require data to be passed,        //     this object can be set to null.        void Execute(object parameter);    }
View Code

Now it's clearly

if we want to set the method to the model first we need construct the class like below

public class CommandHandler:ICommand    {        Action _act;        bool _canExecute;        public CommandHandler(Action act, bool canExecute)        {            _act = act;            _canExecute = canExecute;        }        public bool CanExecute(object parameter)        {            return _canExecute;        }        public event EventHandler CanExecuteChanged;        public void Execute(object parameter)        {            _act(parameter);        }    }
View Code

and now in our model class

private ICommand _SaveCommand;        public ICommand SaveCommand        {            get            {                return _SaveCommand = new CommandHandler(Save, _Execute);            }        }        #endregion        private void Save(object param)        {            ObservableCollection
newIM = new ObservableCollection
(); foreach (Employee e in newIM) { string a = e.FirstName; string b = e.LastName; } or othething }
View Code

 

 

 

 

转载于:https://www.cnblogs.com/akingyao/archive/2013/05/24/3097171.html

你可能感兴趣的文章
大佬是怎么思考设计MySQL优化方案的?
查看>>
<三体> 给岁月以文明, 给时光以生命
查看>>
Android开发 - 掌握ConstraintLayout(九)分组(Group)
查看>>
springboot+logback日志异步数据库
查看>>
Typescript教程之函数
查看>>
Android 高效安全加载图片
查看>>
vue中数组变动不被监测问题
查看>>
3.31
查看>>
类对象定义 二
查看>>
收费视频网站Netflix:用户到底想要“点”什么?
查看>>
MacOS High Sierra 12 13系统转dmg格式
查看>>
关于再次查看已做的多选题状态逻辑问题
查看>>
动态下拉菜单,非hover
查看>>
政府安全资讯精选 2017年第十六期 工信部发布关于规范互联网信息服务使用域名的通知;俄罗斯拟建立备用DNS;Google打击安卓应用在未经同意情况下收集个人信...
查看>>
简单易懂的谈谈 javascript 中的继承
查看>>
多线程基础知识
查看>>
iOS汇编基础(四)指针和macho文件
查看>>
Laravel 技巧锦集
查看>>
Android 使用 ViewPager+RecyclerView+SmartRefreshLayout 实现顶部图片下拉视差效果
查看>>
Flutter之基础Widget
查看>>