首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RegisterClassCommandBinding不解雇CanExecute

RegisterClassCommandBinding不解雇CanExecute
EN

Stack Overflow用户
提问于 2014-06-24 21:39:15
回答 1查看 409关注 0票数 1

在某些情况下(我无法建立模式),执行就会结束

代码语言:javascript
复制
    System.Windows.Input.CommandManager.InvalidateRequerySuggested();
    var can = GlobalCommands.UpdateWindowTitle.CanExecute(title, null);
    GlobalCommands.UpdateWindowTitle.Execute(title, null);

,而不输入CanExecute或执行方法。变量"can“为false (不执行CanExecute),且该命令从不触发。但有时它会像预期的那样起作用。

以下是创建和绑定命令的方式:

代码语言:javascript
复制
    var updateTitleBinding = new CommandBinding(GlobalCommands.UpdateWindowTitle,         UpdateWindowTitle, CanUpdateWindowTitle);
    CommandManager.RegisterClassCommandBinding(typeof(System.Windows.Window), updateTitleBinding);

我不能用

代码语言:javascript
复制
    Application.Current.MainWindow.CommandBindings.Add(
         new CommandBinding(_addCommand, ExecuteAddCommand, CanExecuteAddCommand));

因为调用类不是可视元素,并且没有CommandBindings

我试着打电话

代码语言:javascript
复制
    System.Windows.Input.CommandManager.InvalidateRequerySuggested();

在CanExecute之前执行调用,但这不影响行为。

--

你知道那里会发生什么事吗?还有什么其他的模式我可以用吗?

这个问题看起来类似于CanExecute method going to false problem,但我没有在任何地方设置焦点。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-26 14:49:13

因为您要为目标传入null,这意味着框架将基于Keyboard.FocusedElement进行路由,所以这要么是空的(如果应用程序不活动,或者键盘焦点在其他东西(比如HwndHost或MessageBox)中),要么Keyboard.FocusedElement是非空的,但不是在窗口的视觉/逻辑树中。

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

https://stackoverflow.com/questions/24396786

复制
相关文章

相似问题

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