我正在开始使用Metro风格的应用程序(我知道我们不应该将其称为Metro,但是我永远不记得它应该被称为...),并且我正在实现一个DelegateCommand
类以在MVVM中使用。在WPF中,ICommand.CanExecuteChanged
事件通常是这样实现的:
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
但是WinRT中不存在
CommandManager
类...还有其他东西吗?还是我们应该自己明确触发此事件? 最佳答案
在WinRT中,您必须手动更新/提高CanExecuteChanged。没有CommandManager可以全局执行此操作。您可以将其视为颈部疼痛,或者由于不能经常调用CanExecute而导致严重的性能提升。这确实意味着您必须在不需要之前考虑级联的属性更改。但这就是事实。手动的。
public void RaiseCanExecuteChanged()
{
if (CanExecuteChanged != null)
CanExecuteChanged(this, EventArgs.Empty);
}