[英]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.