簡體   English   中英

沒有修飾符的KeyBinding(在UserControl中)

[英]KeyBinding with no modifiers (in UserControl)

我想在按下鍵時執行命令(不帶修飾符)。 因此,我嘗試了以下代碼:

<UserControl.InputBindings>
    <KeyBinding Key="A" Command="{Binding ACommand}" />
</UserControl.InputBindings>

但是,KeyBinding不支持鍵,但支持鍵和修飾符。

現在,我考慮使用行為並處理KeyDown事件。 但這太復雜了。

有人知道更簡單的解決方案嗎?

添加:上面的代碼在Window中運行良好

我在UserControl中找到了解決方案。 (使用.NET Framework 4)

Microsoft不支持綁定到您在文本框中鍵入內容時可能按下的普通鍵-除非它具有修飾符。 您可以綁定功能鍵(例如F1)和其他一些不帶修飾符的鍵。 請參閱: http : //msdn.microsoft.com/zh-cn/library/system.windows.input.keygesture(v=vs.110).aspx

我遇到過一個博客,說他可以通過繼承InputGesture並實現Matches函數來創建自己的KeyGesture類來解決此問題。 http://dikhi.wordpress.com/2008/06/27/keygesture-doesnt-work-with-alpha-numeric-key/

我不太明白你的問題是什么。 您編寫的代碼應該可以正常運行 ,無需指定修飾符。

我想問題可能出在您的綁定上,或者您設置了按鍵綁定的控件無法集中,因此不會觸發。

我想出了一種方法,可以只使用單個鍵(例如“ Key.A”)來設置InputBinding

boolean noMod = ModifierKeys == ModifierKeys.None;
KeyBinding inputBinding = new KeyBinding(this, Keys, noMod ? ModifierKeys.Alt : ModifierKeys));
if (noMod)
{
    inputBinding.ClearValue(KeyBinding.ModifiersProperty);
}

那對我來說很好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM