如何检索当前正在悬停的ListViewItem的索引?

时间:2011-01-27 16:38:26

标签: wpf tooltip mouseevent

我已经做了一些努力解决这个问题,但还没有找到适合我的解决方案。

基本上我有一个<ItemsControl><ItemsControl.ItemsTemplate>我有一个<ListView>,显示了一些人的姓名。将列出0到5个人的名字。

我想要做的是提供一个工具提示弹出窗口,其中包含与正在悬停的实体相关的其他信息。如何获取我当前正在悬停的项目的索引(或名称等内容),以确保工具提示显示的内容适用于正确的人?!

我在listview上有一个MouseEnter事件,每当鼠标在实体上移动时触发该事件。在调试模式下,我可以深入了解发件人的详细信息和可以找到我想要的人名,但我如何从代码中找到它?

我想要的是:

int index = sender.GetCurrentlyHoveredOverItem();

我不想通过列出我尝试的所有内容来复杂化这篇文章,但如果您想了解更多信息,请告知我们。

提前感谢您的帮助!

3 个答案:

答案 0 :(得分:1)

正如其他人暗示的那样,但没有明确说明,ListView中的项目应该直接实现工具提示,如果需要,使用ItemTemplate,而不是全局级别。

<ListViewItem ToolTipService.ToolTip="Tooltip for this item" />

答案 1 :(得分:0)

如果您正在使用MVVM ......

IsMouseOver绑定到VM中的属性,例如“CurrentlyHoveredPersonList”。使用OneWayToSource

创建另一个名为“HoveredPersonListViewModel”的VM属性,其中包含工具提示所需的所有详细信息。设置CurrentlyHoveredPersonList后,填充HoveredPersonListViewModel并提出属性更改通知。您将获得对该对象的实际引用,因此您可能不需要索引,但如果这样做,您可以使用IndexOf(object)从视图模型中的源列表中获取它。

将工具提示的DataContextHoveredPersonListViewModel及其组成控件绑定到其相应的属性。

答案 2 :(得分:0)

所以你有一个列表(ListView)的集合(ItemsControl),你需要工具提示特定于其中一个内部列表中的特定元素,我是否理解正确?

如果是这样,为什么不创建一个ListView.ItemTemplate来处理它?<​​/ p>