2013-03-31 2 views
0

Есть ли способ в типичном listBox, чтобы определить, на котором в данный момент сосредоточена функция listBoxItem? Я говорю о состоянии перед отбором, скорее как событие мыши.Получение спискаBoxItem в фокусе

Я пробовал события MouseEnter и Focus, но проблема в том, что я не нашел способа определить, какой элемент называется этими событиями.

ответ

1

Вы должны использовать SelectedIndex или SelectedItem

+0

Не работает. SelectedIndex по-прежнему равен -1, а SelectedItem - null –

0

Вы должны были бы что-то более сложное ...

Смотреть это один для решения 'на основе событий' - хотя I wouldn't recommend that (unless a fast fix or very specific) as it 'ties' your code, you should keep MVVM as much as possible ...

ListBox Mouse Over - How to get the item

<ListBox.ItemContainerStyle> 
    <Style TargetType="{x:Type ListBoxItem}"> 
     <EventSetter Event="MouseEnter" Handler="ListBoxItem_MouseEnter" /> 
    </Style> 
</ListBox.ItemContainerStyle> 

И исправить это, чтобы работать с MVVM (i.e. you need to bind that event as a command into your view-model ICommand - вам понадобится вложенное свойство as орт - например (просто быстрый поиск поможет вам много) ...

How can I tie a WPF Command to a MouseEnter event?
How can I execute a command binding on MouseEnter of a StackPanel in WPF?
WPF – Execute button command on MouseOver

Затем связать что attached property с вашей точки зрения, модель собственности - вы получите как «наведен пункта «изменения», а затем вы можете сделать все остальное - даже установите/выставите собственное свойство «HoveredItem» (как я это сделаю), соедините все вместе и сделайте вместо командной строки непосредственно с этим неуклюжим имуществом или чем-то еще. Это быстрый псевдокод, надеюсь, что это поможет.

Смежные вопросы