Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# WPF:KeyDown事件中组合框F4键未触发_C#_Wpf_Combobox_Wpf Controls_Keydown - Fatal编程技术网

C# WPF:KeyDown事件中组合框F4键未触发

C# WPF:KeyDown事件中组合框F4键未触发,c#,wpf,combobox,wpf-controls,keydown,C#,Wpf,Combobox,Wpf Controls,Keydown,我需要停止F4的默认功能组合框。在谷歌搜索的过程中,我发现了多种解决方案,其中包括combobox的previewkeydown。但是根据我的要求,我不能限制previewkeydown事件。还有别的办法处理这个案子吗?。如果它是combobox中的一个bug,请使用任何其他解决方法来获取F4键的keydown事件。如果要禁用应用程序中的所有combobox,则可以执行此操作。 为ComboBox应用程序范围注册您的按键。您可以在应用程序开始(App.xaml.cs或AppBootStrappe

我需要停止F4的默认功能组合框。在谷歌搜索的过程中,我发现了多种解决方案,其中包括combobox的previewkeydown。但是根据我的要求,我不能限制previewkeydown事件。还有别的办法处理这个案子吗?。如果它是combobox中的一个bug,请使用任何其他解决方法来获取F4键的keydown事件。

如果要禁用应用程序中的所有combobox,则可以执行此操作。 为ComboBox应用程序范围注册您的按键。您可以在应用程序开始(App.xaml.cs或AppBootStrapper,如果您使用的是MVVM)中添加此语句


请注意,这没有经过测试。我使用了类似的方法将文本框移动到enter上。

虽然我知道这个问题很老,但我为遇到这个问题的人编写了一个棘手的解决方案(因为我没有在web上找到它):

我必须说,这种行为不是一个bug,它是整个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行为。

天真的回答:扩展组合框,覆盖OnKeyDown,不要在f4上调用基本实现@user2956667请接受我的解决方案作为答案,让其他人知道。
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;
      }));
   }
}