什么在WinRT中替换命令管理?(What replaces CommandManager in W

2019-07-31 02:04发布

我开始使用Metro风格的应用程序(我知道我们不应该把它称为地铁,但我永远记得它应该被称为......),而且我实施DelegateCommand类中使用MVVM 。 在WPF中, ICommand.CanExecuteChanged事件典型地实现这样的:

    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }

但是, CommandManager类中不存在的WinRT ...有什么别的呢? 或者,我们应该明确地触发该事件自己呢?

Answer 1:

在WinRT中,必须更新/手动提高CanExecuteChanged。 没有命令管理要做到这一点全球。 你可以看看本作中,颈部疼痛,或现严重的性能提升CanExecute不是不断呼吁。 它意味着你必须考虑级联特性的变化而以前你没得。 但是,这是怎么回事。 手册。

public void RaiseCanExecuteChanged()
{
    if (CanExecuteChanged != null)
        CanExecuteChanged(this, EventArgs.Empty);
}


Answer 2:

随着WPF它是强制性的,你执行ICommand.CanExecuteChanged如你所描述。 然而,对于Silverlight的,这是情况并非如此。 请参阅此相关的问题:

WPF CommandParameter绑定不更新

我的猜测是,在WinRT中,如在Silverlight中, CommandManager是没有必要的。

看到这里的相关讨论:

http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/477cdd19-ee88-4746-97fe-59b8dbd44e0a/



文章来源: What replaces CommandManager in WinRT?