首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在WinRT中,什么会取代CommandManager?

在WinRT中,什么会取代CommandManager?
EN

Stack Overflow用户
提问于 2012-08-20 07:08:20
回答 2查看 5.9K关注 0票数 20

我开始使用Metro风格的应用程序(我知道我们不应该叫它Metro,但我从来不记得它应该叫什么……),我正在实现一个在MVVM中使用的DelegateCommand类。在WPF中,ICommand.CanExecuteChanged事件通常是这样实现的:

代码语言:javascript
复制
    public event EventHandler CanExecuteChanged
    {
        add { CommandManager.RequerySuggested += value; }
        remove { CommandManager.RequerySuggested -= value; }
    }

但是WinRT中不存在CommandManager类...有没有别的东西可以代替?或者我们应该自己显式地触发这个事件?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-25 23:51:54

在WinRT中,您必须手动更新/提升CanExecuteChanged。在全球范围内没有CommandManager可以做到这一点。您可能会认为这是一个令人头疼的问题,或者是一个严重的性能提升,因为CanExecute不是经常被调用的。这意味着您必须考虑层叠属性更改,而以前您不必这样做。但事实就是这样。手册。

代码语言:javascript
复制
public void RaiseCanExecuteChanged()
{
    if (CanExecuteChanged != null)
        CanExecuteChanged(this, EventArgs.Empty);
}
票数 14
EN

Stack Overflow用户

发布于 2012-08-20 19:25:34

在使用WPF时,必须按照您所描述的那样实现ICommand.CanExecuteChanged。然而,对于Silverlight来说,情况并非如此。请参阅此相关问题:

WPF CommandParameter binding not updating

我的猜测是在WinRT中,就像在Silverlight中一样,CommandManager是不必要的。

请参阅此处的相关讨论:

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12030697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档