2013-03-20 110 views
1

我有一个ComboBox,带有一些ComboBoxItems。我想用鼠标悬停在ComboBoxItem上时触发一个事件。这是迄今为止我尝试过的代码,但事件不会触发 - 即当我放置一个断点时,事件不会被输入。事件并没有被解雇

private void cmbValue_MouseLeftButtonDown(object sender, MouseButtonEventArgs e) 
     { 
      ComboBox cmb = sender as ComboBox; 
      cmb.Items.Clear(); 

      //Iterates through all virtual tables 
      foreach (TableContainer table in listOpenUnjoinedTables) 
      { 
       ComboBoxItem item = new ComboBoxItem(); 
       item.MouseEnter += item_MouseEnter; 

       if (table.IsVirtual == false) 
       { 
        item.Content = "[" + table.TableDescription + "]"; 
       } 
       else 
       { 
        item.Content = "[" + table.View.Name + "]"; 
       } 

       item.Tag = table; 
       cmb.Items.Add(item); 
      } 
     } 

private void item_MouseEnter(object sender, MouseEventArgs e) 
     { 
      ComboBoxItem item = sender as ComboBoxItem; 

      //Do task 
     } 
+1

如何将事件处理程序分配给ComboBox? – DHN 2013-03-20 13:35:00

+0

@DHN它被分配到ComboBoxItem - 'item.MouseEnter + = item_MouseEnter;' – WPF 2013-03-20 13:36:03

+0

他做了'item.MouseEnter + = item_MouseEnter;' – 2013-03-20 13:36:37

回答

0

尝试GotFocus活动。即使用户使用键盘选择项目,也会触发。我相信那是你确实想在这里:)

public partial class MainWindow : Window 
{ 
    public MainWindow() 
    { 
     InitializeComponent(); 

     var comboBoxItem1 = new ComboBoxItem(); 
     var comboBoxItem2 = new ComboBoxItem(); 

     comboBoxItem1.Content = new Button() { Content = "button1" }; 
     comboBoxItem1.GotFocus += (sender, args) => lbl1.Content = "1111"; 
     comboBoxItem2.Content = "222222"; 
     comboBoxItem2.GotFocus += (sender, args) => lbl1.Content = "2222"; 

     comboBox1.Items.Add(comboBoxItem1); 
     comboBox1.Items.Add(comboBoxItem2); 
    } 
} 

enter image description here

enter image description here

+0

那么如果你把鼠标悬停在一个'Control'上,它就不会获得焦点。所以我不明白,这应该如何工作。如果我错了,请纠正我。 – DHN 2013-03-20 13:47:59

+0

也没有运气。 – WPF 2013-03-20 13:51:03

+0

可能是我不明白这里的问题。如果是这样,请原谅。它虽然为我工作。 – 2013-03-20 13:56:33

0

你不小心删除designer.cs事件?

+0

我不认为这是 - 我创建了一个新的项目,问题是在那里太。 – WPF 2013-03-20 15:47:58