silverlight – ICommands和DelegateCommand的“CanExecuteMethod”为什么它对我们不起作用?

silverlight – ICommands和DelegateCommand的“CanExecuteMethod”为什么它对我们不起作用?,第1张

概述我们正在尝试使用ICommand在Silverlight中使用Prism设置一个按钮.我们希望按钮有时会被禁用. DelegateCommand有2个参数,一个“ExecuteMethod”和一个“CanExecuteMethod” 当我们设置ICommand时,我们希望如果使用“CanExecuteMethod”,那么将调用它以查看是否可以调用“ExecuteMethod”.按钮的Enabled 我们正在尝试使用ICommand在Silverlight中使用Prism设置一个按钮.我们希望按钮有时会被禁用. DelegateCommand有2个参数,一个“ExecuteMethod”和一个“CanExecuteMethod”

当我们设置ICommand时,我们希望如果使用“CanExecuteMethod”,那么将调用它以查看是否可以调用“ExecuteMethod”.按钮的Enabled状态应该反映“CanExecuteMethod”的结果

我们实际看到了什么:
创建表单时,将调用该方法并启用或禁用该按钮. (在这种情况下,启用)
永远不会再次调用CanExecuteMethod,即使我们尝试设置行为以防止这种情况发生,也会触发Execute方法.抛出Execption(我们想要避免的).

显而易见的答案是我们应该调用某种方式:

OnPropertyChanged("SaveCommand");

但是我们在某种程度上做错了.要么我们假设它的工作方式不是,要么我们错过了一步.有任何想法吗?

码:

SaveCommand = new DelegateCommand<string>(OnSaveCommand,CanSave);public voID OnSaveCommand( string helpNumber )        {            OnPropertyChanged("SaveCommand");           //DoSaveStuff        }        public bool CanSave(Object sender)        {            return Model.CanSave();// true or false depending        }
解决方法 您的SaveCommand,因为它是一个DelegateCommand,有一个名为RaiseCanExecuteChanged()的函数.

当您调用此函数时,它将从CanSave函数刷新控件.

DelegateCommands的OnPropertyChanged等于MyCommand.RaiseCanExecuteChanged.

玩得开心!

总结

以上是内存溢出为你收集整理的silverlight – ICommands和DelegateCommand的“CanExecuteMethod”为什么它对我们不起作用?全部内容,希望文章能够帮你解决silverlight – ICommands和DelegateCommand的“CanExecuteMethod”为什么它对我们不起作用?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1004784.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存