我开始使用Metro风格的应用程序(我知道我们不应该把它称为地铁,但我永远记得它应该被称为......),而且我实施DelegateCommand
类中使用MVVM 。 在WPF中, ICommand.CanExecuteChanged
事件典型地实现这样的:
public event EventHandler CanExecuteChanged
{
add { CommandManager.RequerySuggested += value; }
remove { CommandManager.RequerySuggested -= value; }
}
但是, CommandManager
类中不存在的WinRT ...有什么别的呢? 或者,我们应该明确地触发该事件自己呢?
在WinRT中,必须更新/手动提高CanExecuteChanged。 没有命令管理要做到这一点全球。 你可以看看本作中,颈部疼痛,或现严重的性能提升CanExecute不是不断呼吁。 它意味着你必须考虑级联特性的变化而以前你没得。 但是,这是怎么回事。 手册。
public void RaiseCanExecuteChanged()
{
if (CanExecuteChanged != null)
CanExecuteChanged(this, EventArgs.Empty);
}
随着WPF它是强制性的,你执行ICommand.CanExecuteChanged
如你所描述。 然而,对于Silverlight的,这是情况并非如此。 请参阅此相关的问题:
WPF CommandParameter绑定不更新
我的猜测是,在WinRT中,如在Silverlight中, CommandManager
是没有必要的。
看到这里的相关讨论:
http://social.msdn.microsoft.com/Forums/en-US/netfxbcl/thread/477cdd19-ee88-4746-97fe-59b8dbd44e0a/