Как получить индекс ListViewItem в настоящее время находится над? - PullRequest
2 голосов
/ 27 января 2011

Я немного покопался, пытаясь решить эту проблему, но пока не нашел решения, которое работает для меня.

В основном у меня есть <ItemsControl>, а в <ItemsControl.ItemsTemplate> у меня есть<ListView>, который отображает количество имен людей.В списке всегда будут имена от 0 до 5 человек.

Я хочу всплывающую подсказку с дополнительной информацией, относящейся к объекту, над которым ведется поиск.Как получить индекс (или содержимое, например, имя) элемента, над которым я на данный момент нахожу курсор, чтобы убедиться, что отображаемая подсказка предназначена для правильного человека?!

У меня есть событие MouseEnterв списке, который запускается каждый раз, когда мышь перемещается по объекту, и в режиме отладки я могу изучить детали отправителя и найти нужное имя человека, но как мне получить его из кода?

Я хочу что-то вроде:

int index = sender.GetCurrentlyHoveredOverItem();

Я не хочу слишком усложнять этот пост, перечисляя все, что я пробовал, но если вам нужна дополнительная информация, пожалуйста, дайте мне знать.

Заранее спасибо за помощь!

Ответы [ 3 ]

1 голос
/ 27 января 2011

Как уже намекали другие, но явно не сказали, что элементы в ListView должны реализовывать всплывающую подсказку напрямую, используя ItemTemplate, если необходимо, а не на глобальном уровне.

<ListViewItem ToolTipService.ToolTip="Tooltip for this item" />
0 голосов
/ 27 января 2011

Итак, у вас есть коллекция (ItemsControl) списков (ListView), и вам нужно, чтобы всплывающая подсказка относилась к конкретному элементу одного из внутренних списков, правильно ли я понял?

Если так, то почему бы не создать ListView.ItemTemplate, чтобы позаботиться об этом?

0 голосов
/ 27 января 2011

Если вы используете MVVM…

Привязать IsMouseOver к свойству в виртуальной машине, например «Текущий список покрытых». Используйте OneWayToSource.

Создайте еще одно свойство виртуальной машины с именем "HoveredPersonListViewModel", которое содержит все сведения, необходимые для всплывающей подсказки. Когда CurrentlyHoveredPersonList будет установлено, заполните HoveredPersonListViewModel и создайте уведомление об изменении свойства. Вы получите фактическую ссылку на объект, поэтому вам может не понадобиться индекс, но если вы это сделаете, вы можете использовать IndexOf(object), чтобы получить его из списка источников прямо в модели представления.

Привязать всплывающую подсказку DataContext к HoveredPersonListViewModel и составляющие ее элементы управления с соответствующими свойствами.

...