gpt4 book ai didi

c# - 自定义命令忽略热键

转载 作者:太空狗 更新时间:2023-10-29 21:32:54 25 4
gpt4 key购买 nike

我正在编写我的第一个 WPF 应用程序,并试图让我的自定义命令起作用。

public static RoutedUICommand Header1 { get; private set; }

.
.
.

gestures = new InputGestureCollection();
gestures.Add(new KeyGesture(Key.D1, ModifierKeys.Control, "Ctrl+1"));
Header1 = new RoutedUICommand("Header 1", "Header1", typeof(EditCommands), gestures);

然后我将 CommandBindings 部分添加到我窗口的 XAML。

<!-- local refers to my application's namespace -->
<Window.CommandBindings>
<CommandBinding Command="local:EditCommands.Header1" Executed="CommandBinding_Executed" CanExecute="CommandBinding_CanExecute"></CommandBinding>
</Window.CommandBindings>

最后,向关联的功能区控件添加命令条目。

<RibbonButton Label="Header 1" Command="local:EditCommands.Header1" SmallImageSource="Images\small.png" ToolTipTitle="Header 1" ToolTipDescription="" ToolTipImageSource="Images\small.png"></RibbonButton>

单击功能区按钮会按预期执行处理程序。但是,按 Ctrl+1 似乎完全没有效果。如何识别我的热键?

最佳答案

一定有其他事情发生了。在键输入到达具有包含您的命令的命令绑定(bind)的元素之前,是否有一些元素可以处理键输入?

Snooop 是解决此类问题的有用工具。

使用下面的代码,只要按下 Ctrl+1,就会调用 HandleHeader1。

public static class MyCommands
{
public static RoutedUICommand Header1 { get; } = new RoutedUICommand("Header 1", "Header1", typeof(MyCommands), new InputGestureCollection { new KeyGesture(Key.D1, ModifierKeys.Control, "Ctrl+1") });
}

public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
}

private void HandleHeader1(object sender, ExecutedRoutedEventArgs e)
{
}
}

<Window x:Class="WpfApplication2.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApplication2"
mc:Ignorable="d"
Title="MainWindow" Height="350" Width="525">
<Window.CommandBindings>
<CommandBinding Command="local:MyCommands.Header1" Executed="HandleHeader1"/>
</Window.CommandBindings>
<StackPanel>
<TextBox/>
</StackPanel>
</Window>

关于c# - 自定义命令忽略热键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34488490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com