WPF ComboBox 获取突出显示的项目

问题描述 投票:0回答:2

我试图在下拉列表仍处于打开状态时获取

ComboBox
中下拉列表中突出显示的项目的值。

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

ToolTip

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

我还尝试在

IsHighlighted
上使用
ComboBoxItem
SelectionChanged
属性...但我给出的是选定的项目,而不是突出显示的项目。

我还尝试在绑定(使用数据绑定)到

ToolTip
ComboBoxItems
属性的属性获取中循环使用 ComboBox 中的元素,使用如下函数:

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

但我可能做错了什么...因为

comboBoxItem.IsHighlighted
它总是假的...

c# wpf combobox highlight
2个回答
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
    }  

0
投票

非常感谢您。我长期以来一直在寻找这样的解决方案。

© www.soinside.com 2019 - 2024. All rights reserved.