【发布时间】:2015-12-28 06:10:24
【问题描述】:
我正在编写我的第一个 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);
然后我在窗口的 XAML 中添加了一个CommandBindings 部分。
<!-- local refers to my application's namespace -->
<Window.CommandBindings>
<CommandBinding Command="local:EditCommands.Header1" Executed="CommandBinding_Executed" CanExecute="CommandBinding_CanExecute"></CommandBinding>
</Window.CommandBindings>
最后,向关联的 Ribbon 控件添加了一个命令条目。
<RibbonButton Label="Header 1" Command="local:EditCommands.Header1" SmallImageSource="Images\small.png" ToolTipTitle="Header 1" ToolTipDescription="" ToolTipImageSource="Images\small.png"></RibbonButton>
单击功能区按钮会按预期执行处理程序。但是,按Ctrl+1 似乎根本没有效果。如何识别我的热键?
【问题讨论】:
-
@AnjumSKhan:NumLock 不应该影响
Key.D1键的行为(这种情况下有Key.NumPad1键)。 -
@AnjumSKhan:我的热键似乎都没有被识别。
-
@JonathanWood 嗨,我检查了包括 urs 在内的各种热键组合,它在这里工作正常。请检查您的
Command是否实际上首先被执行。还请尝试为您的Command使用普通的Button并验证。 -
@AnjumSKhan:如果我单击 RibbonButton,则执行命令。但是我的命令都没有使用热键执行。我尝试添加一个常规按钮——它现在只是被禁用了。我可以再玩一会儿。您是如何定义命令并将其绑定到您的窗口的?
-
另外,你的窗口的
CommandBinding_CanExecute方法是什么样的?