Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/14.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# 如何在wpf中添加多个命令绑定_C#_Wpf_Commandbinding - Fatal编程技术网

C# 如何在wpf中添加多个命令绑定

C# 如何在wpf中添加多个命令绑定,c#,wpf,commandbinding,C#,Wpf,Commandbinding,我和WPF一起工作。我想为我的WPF应用程序创建键盘快捷键。我创建了如下内容。open的第一个命令绑定标记正在工作,而exit的命令绑定不工作。我不知道原因是什么 <Window.CommandBindings> <CommandBinding Command="Open" Executed="CommandBinding_Executed"/> <CommandBinding Command="Exit" Executed="CommandBinding_Exec

我和WPF一起工作。我想为我的WPF应用程序创建键盘快捷键。我创建了如下内容。open的第一个命令绑定标记正在工作,而exit的命令绑定不工作。我不知道原因是什么

<Window.CommandBindings>
<CommandBinding Command="Open" Executed="CommandBinding_Executed"/>
<CommandBinding Command="Exit" Executed="CommandBinding_Executed_1" />
</Window.CommandBindings>
<Window.InputBindings>
<KeyBinding Command="Open" Key="O" Modifiers="control" />
<KeyBinding Command="Exit" Key="E" Modifiers="control"/>
</Window.InputBindings>
上述代码出现以下错误:

无法将属性“Command”中的字符串“Exit”转换为类型为的对象 “System.Windows.Input.ICommand”。CommandConverter无法从转换 System.String。中的对象“System.Windows.Input.CommandBinding”处出错
标记文件“WpfApplication2”;component/window1.xaml'行80位置25。

您的问题是没有退出命令。你得自己滚

创建自己的命令非常容易,我使用一个静态实用程序类来保存我经常使用的常用命令。大概是这样的:

public static class AppCommands
{
    private static RoutedUICommand exitCommand = new RoutedUICommand("Exit","Exit", typeof(AppCommands));

    public static RoutedCommand ExitCommand
    {
        get { return exitCommand; }
    }

    static AppCommands()
    {
        CommandBinding exitBinding = new CommandBinding(exitCommand);
        CommandManager.RegisterClassCommandBinding(typeof(AppCommands), exitBinding);
    }
}
<KeyBinding Command="{x:Static local:AppCommands.Exit}" Key="E" Modifiers="control"/>
然后,您应该能够像这样绑定它:

public static class AppCommands
{
    private static RoutedUICommand exitCommand = new RoutedUICommand("Exit","Exit", typeof(AppCommands));

    public static RoutedCommand ExitCommand
    {
        get { return exitCommand; }
    }

    static AppCommands()
    {
        CommandBinding exitBinding = new CommandBinding(exitCommand);
        CommandManager.RegisterClassCommandBinding(typeof(AppCommands), exitBinding);
    }
}
<KeyBinding Command="{x:Static local:AppCommands.Exit}" Key="E" Modifiers="control"/>

您的问题是没有退出命令。你得自己滚

创建自己的命令非常容易,我使用一个静态实用程序类来保存我经常使用的常用命令。大概是这样的:

public static class AppCommands
{
    private static RoutedUICommand exitCommand = new RoutedUICommand("Exit","Exit", typeof(AppCommands));

    public static RoutedCommand ExitCommand
    {
        get { return exitCommand; }
    }

    static AppCommands()
    {
        CommandBinding exitBinding = new CommandBinding(exitCommand);
        CommandManager.RegisterClassCommandBinding(typeof(AppCommands), exitBinding);
    }
}
<KeyBinding Command="{x:Static local:AppCommands.Exit}" Key="E" Modifiers="control"/>
然后,您应该能够像这样绑定它:

public static class AppCommands
{
    private static RoutedUICommand exitCommand = new RoutedUICommand("Exit","Exit", typeof(AppCommands));

    public static RoutedCommand ExitCommand
    {
        get { return exitCommand; }
    }

    static AppCommands()
    {
        CommandBinding exitBinding = new CommandBinding(exitCommand);
        CommandManager.RegisterClassCommandBinding(typeof(AppCommands), exitBinding);
    }
}
<KeyBinding Command="{x:Static local:AppCommands.Exit}" Key="E" Modifiers="control"/>

你还可以提供实际的代码和xaml吗?你还可以提供实际的代码和xaml吗?@havan:嗯,.NET中已经内置了几组命令。有一组组件命令、媒体命令、导航命令和编辑命令。但是创建自己的命令很容易。我编辑了我的答案,以展示一种方法。另外,我也不知道为什么微软忽略了在应用程序命令中添加ExitCommand。@哈文:嗯,.NET中已经内置了几组命令。有一组组件命令、媒体命令、导航命令和编辑命令。但是创建自己的命令很容易。我编辑了我的答案,以展示一种方法。另外,我不知道为什么微软忽略了在应用程序命令中添加ExitCommand。