C# 该命令在单击按钮时起作用,但在使用keybinding时不起作用
当我单击菜单项时,该命令工作正常,但当我点击键绑定时,它从未被调用。有什么想法吗 XAML: 注意:我绑定到页面中的输入,如果不对程序进行一些重大更改,我无法在窗口中绑定它 谢谢,C# 该命令在单击按钮时起作用,但在使用keybinding时不起作用,c#,wpf,xaml,C#,Wpf,Xaml,当我单击菜单项时,该命令工作正常,但当我点击键绑定时,它从未被调用。有什么想法吗 XAML: 注意:我绑定到页面中的输入,如果不对程序进行一些重大更改,我无法在窗口中绑定它 谢谢, Philip我认为您需要将CanExecute事件设置为true XAML: 在WPF中,InputGestureText不是真正的绑定。这只是一个视觉暗示。必须在窗口_PreviewKeyDown中对键绑定进行编码 键绑定可以被一些控件捕获,因此最好避免它 private void Window_PreviewKe
Philip我认为您需要将CanExecute事件设置为true XAML:
在WPF中,InputGestureText不是真正的绑定。这只是一个视觉暗示。必须在窗口_PreviewKeyDown中对键绑定进行编码 键绑定可以被一些控件捕获,因此最好避免它
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.Modifiers == ModifierKeys.Control)
{
switch (e.Key)
{
case Key.N:
MenuCommands.NewProject.Execute(NewProjectMenuItem);
break;
}
}
}
我想你的装订有错
MenuCommands:NewProject
可能应该是MenuCommands.NewProject
(或者使用x:Static
而不是绑定-取决于从何处获取命令)。此外,如果使用路由命令,您可以在创建默认输入手势时定义它们。@CaptainPicard将该答案作为已验证的答案,以便结束该问题;)
private void NewProjectMenuItem_Click(object sender, RoutedEventArgs e)
{
MenuCommands.NewProject.Execute(NewProjectMenuItem);
}
<Window.InputBindings>
<KeyBinding Key="B"
Modifiers="Control"
Command="ApplicationCommands.Open" />
</Window.InputBindings>
<Window.CommandBindings>
<CommandBinding Command="ApplicationCommands.Open" CanExecute="CommonCommandBinding_CanExecute" Executed="OpenCommand_Executed" />
</Window.CommandBindings>
<Button Command="Open" ToolTip="Open">
<Image Source="/WPFeBookProject;component/Resources/Images/Open-icon.png" />
</Button>
private void CommonCommandBinding_CanExecute(object sender, CanExecuteRoutedEventArgs e)
{
e.CanExecute = true;
}
private void OpenCommand_Executed(object sender, ExecutedRoutedEventArgs e)
{
MessageBox.Show("Open executed has been triggered!");
}
private void Window_PreviewKeyDown(object sender, KeyEventArgs e)
{
if (Keyboard.Modifiers == ModifierKeys.Control)
{
switch (e.Key)
{
case Key.N:
MenuCommands.NewProject.Execute(NewProjectMenuItem);
break;
}
}
}