簡體   English   中英

WPF:ComboBox F4鍵未在KeyDown事件中觸發

[英]WPF: ComboBox F4 key is not firing in KeyDown Event

我需要停止F4的ComboBox默認功能。 在谷歌搜索時,我遇到了各種解決方案,使用了combobox的預覽。 但是根據我的要求,我無法限制previewkeydown事件。 還有其他辦法處理這種情況嗎? 如果它是組合框中的錯誤,任何其他解決方法來獲取F4鍵的keydown事件。

如果要在應用程序中禁用所有ComboBox,則可以執行此操作。 在ComboBox應用程序范圍內注冊KeyDown。 您可以在應用程序啟動時添加此語句(如果您使用的是MVVM,則為App.xaml.cs或AppBootStrapper)

EventManager.RegisterClassHandler(typeof(ComboBox) ,UIElement.KeyDownEvent ,new KeyEventHandler((sender ,e) =>
{
    var cb = sender as ComboBox;
    if ( cb != null && e.Key == Key.F4 )
        e.Handled = true;   
}));

請注意,這未經過測試。 我使用類似的方法將TextBox移動重點放在enter上。

雖然我知道這個問題已經過時了,但是我寫了一個棘手的解決方案(因為我沒有在網上找到它)來解決這個問題:

我必須說這種行為不是一個錯誤,它是Windows上所有標准下拉(ComboBox)控件的常見操作。

您可以使用CommandBinding在WPF中簡單地覆蓋它。

public class MyWindow
{
   private static readonly RoutedCommand DummyEmptyCommand = new RoutedCommand("DummyEmptyCommand", typeof(MyWindow), new InputGestureCollection() { new KeyGesture(Key.F4) });

   public MyWindow()
   {
      MyComboBox.CommandBindings.Add(new CommandBinding(DummyEmptyCommand, (o, e) => 
      { 
         // Do your work here or simply leave it blank to disable F4 common behavior;
      }));
   }
}

通過這種方式,您可以實現自己的替代工作,或者只是禁用標准的常見窗口行為。

暫無
暫無

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

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