如何根据将鼠标悬停在组合框项目上的位置来更改标签文本?
例如pic 1
当鼠标悬停在某个项目上但没有选择它时,我希望标签更改为与鼠标悬停在该项目上相同的文本。 更改我要做的文字
flatLabel2.Text = flatComboBox1.SelectedItem.ToString().ToUpper();
但是当鼠标悬停在某个项目上时找不到方法,也许我以错误的方式进行了谷歌搜索。 有人有解决方案吗?
答案 0 :(得分:0)
如果是WPF项目(如我之前发现的那样),则必须使用 DependencyPropertyDescriptor 来触发项目的MouseOver事件:
DependencyPropertyDescriptor dpd;
private void ComboBox_Loaded(object sender, RoutedEventArgs e)
{
ComboBoxItem cmb = sender as ComboBoxItem;
dpd = DependencyPropertyDescriptor
.FromProperty(IsMouseOverProperty, typeof(ComboBoxItem));
if (dpd != null)
dpd.AddValueChanged(cmb, OnIsMouseOver);
}
private void ComboBox_Unloaded(object sender, RoutedEventArgs e)
{
if (dpd != null)
dpd.RemoveValueChanged(cmb, OnIsMouseOver);
}
private void OnIsMouseOver(object sender, EventArgs e)
{
ComboBoxItem cmb = sender as ComboBoxItem;
if (cmb.IsMouseOver)
{
//do something...
}
}
并查看:
<ComboBox x:Name="cmb">
<ComboBox.ItemContainerStyle>
<Style TargetType="ComboBoxItem">
<EventSetter Event="Loaded" Handler="ComboBox_Loaded" />
<EventSetter Event="Unloaded" Handler="ComboBox_Unloaded" />
</Style>
</ComboBox.ItemContainerStyle>
</ComboBox>