2013-07-13 3 views
2

Я пытаюсь получить значение выделенного элемента раскрывающегося списка в ComboBox, пока раскрывающийся список все еще открыт.WPF 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 ... Но Я даю элемент выбранному, а не выделенному.

Я также пытаюсь велосипедного элементы в ComboBox в ГЭТ имущества, которое я связать (с Databinding) к ToolTip свойству ComboBoxItems, используя функцию, как:

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

Но я, вероятно, сделать что-то неправильно ... Потому что comboBoxItem.IsHighlighted это всегда ложь ...

ответ

3

Благодаря этим ресурсам: 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 
    }