Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 该命令在单击按钮时起作用,但在使用keybinding时不起作用_C#_Wpf_Xaml - Fatal编程技术网

C# 该命令在单击按钮时起作用,但在使用keybinding时不起作用

C# 该命令在单击按钮时起作用,但在使用keybinding时不起作用,c#,wpf,xaml,C#,Wpf,Xaml,当我单击菜单项时,该命令工作正常,但当我点击键绑定时,它从未被调用。有什么想法吗 XAML: 注意:我绑定到页面中的输入,如果不对程序进行一些重大更改,我无法在窗口中绑定它 谢谢, Philip我认为您需要将CanExecute事件设置为true XAML: 在WPF中,InputGestureText不是真正的绑定。这只是一个视觉暗示。必须在窗口_PreviewKeyDown中对键绑定进行编码 键绑定可以被一些控件捕获,因此最好避免它 private void Window_PreviewKe

当我单击菜单项时,该命令工作正常,但当我点击键绑定时,它从未被调用。有什么想法吗

XAML:

注意:我绑定到页面中的输入,如果不对程序进行一些重大更改,我无法在窗口中绑定它

谢谢,
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;
        }
    }
}