我需要停止F4的ComboBox的默认功能。当用Google搜索时,我遇到了各种各样的解决方案,包括combobox的预览。但对于我的要求,我不能限制预览日期事件。任何其他方式来处理这种情况?如果它是组合框中的错误,则可以使用任何其他解决方法来获取F4键的keydown事件。WPF:ComboBox F4键在KeyDown中没有触发事件
2
A
回答
0
如果你想在你的应用程序中禁用所有的ComboBox,那么你可以这样做。 注册您的KeyDown for ComboBox应用程序范围。您可以(如果你使用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移动焦点。
0
虽然我知道这个问题是旧的,但我写我棘手的解决方案(因为我没有发现它在Web)的人从事这个问题:
我必须说,这种行为是不是一个错误,这是对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;
}));
}
}
这样,您可以实现自己的替代工作或者只是禁用标准的常见Windows行为。
相关问题
- 1. Opera没有触发keyup和keydown事件
- 2. VB.Net中KeyDown事件触发当没有按键时
- 3. 在UserControl中未触发KeyDown事件
- 4. JS触发keydown事件
- 5. KeyDown事件未被触发
- 6. keydown事件触发两次
- 7. 没有在SketchFlow中触发KeyDown
- 8. 没有为UWP中的TextBox触发KeyDown事件
- 9. 力keydown事件来触发每键代码只有一次
- 10. JavaScript键盘事件没有触发
- 11. 键监听器事件没有触发?
- 12. Ext.js Combox keydown触发器选择没有选择的事件
- 13. 触发没有特定功能的Visual Basic Keydown事件
- 14. KeyDown事件不会使用回车键在ContextMenuStrip上触发?
- 15. 在keydown事件中的preventDefault(),onchange事件不触发
- 16. 在单个keydown上触发不需要的多个KeyDown事件
- 17. 在AS3中没有触发Mouse_down事件
- 18. 在CustomListItem中没有事件触发
- 19. UITextView触发事件没有触发
- 20. jQuery的:keydown事件触发乘次
- 21. 强迫keydown事件触发(Windows)
- 22. 触发自动重复Javascript keydown事件
- 23. KeyDown事件不是第二次触发
- 24. VB.NET文本框keydown事件不触发
- 25. KeyDown事件不能用.NET WinForms触发?
- 26. 点击后不再触发Keydown事件
- 27. backSpace在Android手机中没有触发按键事件
- 28. OnCheckedChanged事件没有触发
- 29. ASP.NET事件没有触发
- 30. Dropzone.js事件没有触发
天真的答案:扩展组合框,覆盖OnKeyDown,不要在f4上调用基础实现。 http://msdn.microsoft.com/en-us/library/system.windows.controls.combobox.onkeydown(v=vs.110).aspx – Will
@ user2956667请接受我的解决方案作为让别人知道的答案。 – lifestyle