the*_*age 4 silverlight prism mvvm
我们正在尝试使用ICommand在Silverlight中使用Prism设置一个按钮.我们希望按钮有时会被禁用.DelegateCommand有2个参数,一个"ExecuteMethod"和一个"CanExecuteMethod"
当我们设置ICommand时,我们希望如果使用"CanExecuteMethod",那么将调用它以查看是否可以调用"ExecuteMethod".按钮的Enabled状态应该反映"CanExecuteMethod"的结果
我们实际看到的内容:创建表单时,将调用该方法并启用或禁用该按钮.(在这种情况下,启用)CanExecuteMethod永远不会被再次调用,即使我们试图设置行为以防止这种情况发生,也会触发Execute方法.抛出Execption(我们想要避免的).
显而易见的答案是我们应该调用某种方式:
OnPropertyChanged("SaveCommand");
Run Code Online (Sandbox Code Playgroud)
但是我们在某种程度上做错了.要么我们假设它的工作方式不是,要么我们错过了一步.有任何想法吗?
码:
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
}
Run Code Online (Sandbox Code Playgroud)
您的SaveCommand,因为它是一个DelegateCommand,有一个名为RaiseCanExecuteChanged()的函数.
当您调用此函数时,它将从CanSave函数刷新控件.
DelegateCommands的OnPropertyChanged等于MyCommand.RaiseCanExecuteChanged.
玩得开心!
归档时间: |
|
查看次数: |
1071 次 |
最近记录: |