我需要停止F4的ComboBox默认功能。在谷歌搜索时,我遇到了各种解决方案,使用了combobox的预览。但是根据我的要求,我无法限制previewkeydown事件。还有其他办法处理这种情况吗?如果它是组合框中的错误,那么任何其他解决方法都可以获得F4密钥的keydown事件。
答案 0 :(得分:0)
如果要在应用程序中禁用所有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移动重点放在输入上。
答案 1 :(得分:0)
虽然我知道这个问题已经过时了,但我写了一个棘手的解决方案(因为我没有在网上找到它),因为有人遇到这个问题:
我必须说这种行为不是错误,它是跨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;
}));
}
}
通过这种方式,您可以实现自己的替代工作,或者只是禁用标准的常见窗口行为。