选择combobox时的事件

我的问题是如何在C#(WPF)的ComboBox中选择ComboBoxItem时执行操作?

在这篇文章中,他们处理DropDownClosed事件,但他们没有处理键盘选择

所以我解释一下我的情况:

ComboBoxItems的“Selected”事件或ComboBox的“SelectionChanged”事件仅在用户选择不同的ComboBoxItem时执行操作,但我希望即使用户选择的ComboBoxItem与ComboBoxItem相同也要执行该操作已经选中了。

我尝试使用“PreviewMouseLeftButtonDown”,但是如果用户选择键盘或只是按住鼠标然后选择,则它不起作用。

在我的情况下,我必须在选择项目时打开一个窗口:

private void cmiCCSelect_Selected(object sender, RoutedEventArgs e) { cCEntityWindow.ShowDialog(); } 

但是,如果用户关闭此窗口并重新选择相同的项目,则它不起作用。 我必须选择另一个并在重新选择相同的事件后“可以执行”。

有谁能够帮我?

我终于找到了答案:

您需要像这样处理SelectionChanged事件和DropDownClosed:

在XAML中:

  1 2 3  

在C#中:

 private bool handle = true; private void ComboBox_DropDownClosed(object sender, EventArgs e) { if(handle)Handle(); handle = true; } private void ComboBox_SelectionChanged(object sender, SelectionChangedEventArgs e) { ComboBox cmb = sender as ComboBox; handle = !cmb.IsDropDownOpen; Handle(); } private void Handle() { switch (cmbSelect.SelectedItem.ToString().Split(new string[] { ": " }, StringSplitOptions.None).Last()) { case "1": //Handle for the first combobox break; case "2": //Handle for the second combobox break; case "3": //Handle for the third combobox break; } }