C# 命令';已调用s CanExecute方法,但未调用Execute方法

C# 命令';已调用s CanExecute方法,但未调用Execute方法,c#,wpf,routed-commands,C#,Wpf,Routed Commands,我已将命令绑定到功能区控件上的按钮。按预期调用按钮上的CanExecute方法,但单击按钮不会导致调用Execute方法。CanExecute将CanExecute属性设置为true-相关按钮已启用并可单击 以前有人见过这种行为吗?如果是这样,我该如何修复它 编辑: StaticCommands。此命令是一个RoutedCommand,输入手势为F5 不幸的是,我无法发布任何xaml,因为所有内容都打包在另一个团队的库中。我现在认为这是正确的。此外,使用与命令相关联的键盘手势(按F5)会导致调用

我已将命令绑定到功能区控件上的按钮。按预期调用按钮上的CanExecute方法,但单击按钮不会导致调用Execute方法。
CanExecute
CanExecute
属性设置为
true
-相关按钮已启用并可单击

以前有人见过这种行为吗?如果是这样,我该如何修复它

编辑:

StaticCommands。此命令是一个
RoutedCommand
,输入手势为
F5

不幸的是,我无法发布任何xaml,因为所有内容都打包在另一个团队的库中。我现在认为这是正确的。此外,使用与命令相关联的键盘手势(按
F5
)会导致调用execute方法


没有抛出异常,输出窗口中没有消息,snoop显示所有绑定正确的内容。我真的被难住了。

如果参数类型不匹配,通常会发生这种情况。。。您是否绑定了一种类型的
CommandParameter
,并在命令中接受了另一种类型的参数。Execute()调用?

通过将
RoutedCommands
包装到。我不知道为什么会这样,但假设另一个团队的程序集中有问题。

如果
CanExecute()
返回false,它就不能
Execute()
<调用了code>CanExecute()
,但单击按钮时返回什么?如果是命令绑定,如果CanExecute(object)方法返回false,则单击将不可用。@BoltClock可能是正确的。但是,如果CanExecute()返回true,我们需要查看一些代码来帮助诊断。请发布您的XAML和定义要在XAML中进行数据绑定的命令的代码。
CanExecute
返回true。该按钮已启用并可单击。我使用的是只接受发送方和事件参数的
executeOutDevenHandler
。有没有一个原因,键盘手势可以工作,但不点击按钮?奇怪!键盘手势是否指向相同的
i命令
?如果是,则表明
CommandBinding
可能存在问题(因为同一命令的
KeyBinding
)。调用CommandManager.invalidateRequestSuggested()
窗口中加载
事件,请参阅。
CommandBinding commandBinding = new CommandBinding(StaticCommands.ThisCommand, ThisCommandExecutedHandler, ThisCommandCanExecuteHandler);
CommandManager.RegisterClassCommandBinding(this.GetType(), commandBinding);
CommandBindingList.Add(commandBinding);