WPF ComboBox 获取高亮项目

3

我正在尝试在下拉列表的ComboBox仍然打开的情况下获取高亮项目的值。

这是因为我想根据高亮项目为下拉列表中的所有元素显示不同的ToolTip

我在这里找到了一些信息:http://social.msdn.microsoft.com/Forums/vstudio/en-US/822f85e7-524a-4af2-b09a-c88c94971ac0/identifying-the-highlighted-item-in-a-combobox,但似乎很困难,需要很多代码支持...

我还尝试在SelectionChanged事件上使用ComboBoxItemIsHighlighted属性...但我只得到了所选项目而不是高亮项目。

我也尝试在绑定(使用数据绑定)到ComboBoxItemsToolTip属性的属性获取器中循环遍历ComboBox中的元素,使用类似以下的函数:

foreach (ComboBoxItem comboBoxItem in comboBox.Items)
{
    if (comboBoxItem.IsHighlighted == true)
    {
        //Do something          
        break;
    }
}

但我可能做错了什么......因为comboBoxItem.IsHighlighted总是为false......

1个回答

2
感谢这个资源: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
    }  

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接