我正在开始使用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);
}

10-08 05:08