Rel*_*ity 16 wpf mvvm canexecute
我可以使用CanExecuteChanged更改"可执行"条件吗?
或者......"用于什么"它的使用?
Tim*_*oyd 22
不,你不能用它来改变可执行状态.这是一个事件,参与ICommand模式的对象可以选择监听此事件,例如按钮可以使用此事件来知道何时重新查询命令状态(通过调用can执行方法)来设置其启用状态.
为了使can执行模式有用,需要有一些可用于引发事件的东西.Prism DelegateCommand有一个方法可以调用手动引发此事件,以便订阅者在选择加入模式时重新查询can execute方法.
例
在下面基于Prism的示例中,我们在CanExecute执行save命令时将SaveCommand的状态从false 更改为true.调用RaiseCanExecuteChanged将导致CanExecuteChanged事件被引发,并且客户端将调用该CanExecute方法.在实践中,这将使一个Save按钮被绑定将SaveCommand其状态从启用更改为禁用并再次返回到启用状态.
public class BlingViewModel
{
private DelegateCommand<object> _saveCommand;
private bool _canSaveExecute = true;
public ICommand SaveCommand
{
get
{
if (_saveCommand == null)
{
_saveCommand = new DelegateCommand<object>
(
executeMethod: _ => Save()
,
canExecuteMethod: _ => _canSaveExecute
);
}
return _saveCommand;
}
}
private void Save()
{
_canSaveExecute = false;
_saveCommand.RaiseCanExecuteChanged();
Console.WriteLine("Saving...");
_canSaveExecute = true;
_saveCommand.RaiseCanExecuteChanged();
}
}
Run Code Online (Sandbox Code Playgroud)
或者只是打电话,System.Windows.Input.CommandManager.InvalidateRequerySuggested()以便CanExecute重新评估您的处理程序.
| 归档时间: |
|
| 查看次数: |
26774 次 |
| 最近记录: |