事件并没有被解雇
问题描述:
我有一个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
}
答
尝试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);
}
}
如何将事件处理程序分配给ComboBox? – DHN 2013-03-20 13:35:00
@DHN它被分配到ComboBoxItem - 'item.MouseEnter + = item_MouseEnter;' – WPF 2013-03-20 13:36:03
他做了'item.MouseEnter + = item_MouseEnter;' – 2013-03-20 13:36:37