WPF组合框获取突出显示的项目
本文关键字:显示 项目 组合 获取 WPF | 更新日期: 2023-09-27 18:22:22
当下拉列表仍然打开时,我正在尝试获取ComboBox
中下拉列表突出显示项的值。
这是因为我想根据高亮显示的项目为下拉列表中的所有元素显示不同的ToolTip
。
我在这里找到了一些信息:http://social.msdn.microsoft.com/Forums/vstudio/en-US/822f85e7-524a-4af2-b09a-c88c94971ac0/identifying-the-highlighted-item-in-a-combobox但似乎很难,而且后面有很多代码。。。
我还尝试在SelectionChanged
上使用ComboBoxItem
的IsHighlighted
属性。。。但我给出的是选定的项目,而不是突出显示的项目。
我还尝试在get-of属性中循环ComboBox中的元素,我将其绑定(使用Databinding)到ComboBoxItems
的ToolTip
属性,使用以下函数:
foreach (ComboBoxItem comboBoxItem in comboBox.Items)
{
if (comboBoxItem.IsHighlighted == true)
{
//Do something
break;
}
}
但我可能做错了什么。。。因为comboBoxItem.IsHighlighted
总是错误的。。。
感谢这些资源:http://social.msdn.microsoft.com/Forums/vstudio/en-US/ce14fc29-d320-4557-abc5-81b042730c48/how-to-get-current-combobox-item-on-which-mouse-overs-in-wpf
我找到了这个解决方案:
在WPF:
<ComboBox
Name="ComboBox1">
<ComboBox.ItemContainerStyle>
<Style TargetType="{x:Type ComboBoxItem}">
<EventSetter Event="MouseMove" Handler="OnMouseMove" />
</Style>
</ComboBox.ItemContainerStyle>
<ComboBoxItem
Content="Test1"></ComboBoxItem>
<ComboBoxItem
Content="Test2"></ComboBoxItem>
</ComboBox>
在后面的代码中:
private void OnMouseMove(object sender, MouseEventArgs e)
{
ComboBoxItem highlightedComboBoxItem = sender as ComboBoxItem;
// highlightedComboBoxItem is true
}