Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/wpf/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wpf 如何检索当前悬停的ListViewItem的索引?_Wpf_Tooltip_Mouseevent - Fatal编程技术网

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

Wpf 如何检索当前悬停的ListViewItem的索引?,wpf,tooltip,mouseevent,Wpf,Tooltip,Mouseevent,我已经做了一些挖掘,试图解决这个问题,但还没有找到一个适合我的解决方案 基本上我有一个,在中我有一个,它显示了许多人的名字。将始终列出0到5个人的姓名 我想做的是弹出一个工具提示,其中包含与悬停实体相关的其他信息。如何获取我当前悬停的项目的索引(或名称等内容),以确保工具提示所显示的对象是正确的人 我在listview上有一个MouseEnter事件,每次鼠标移动到实体上都会触发该事件&在调试模式下,我可以深入查看发送者的详细信息&可以找到我想要的人的名字,但如何从代码中获取它 我想要的是: i

我已经做了一些挖掘,试图解决这个问题,但还没有找到一个适合我的解决方案

基本上我有一个
,在
中我有一个
,它显示了许多人的名字。将始终列出0到5个人的姓名

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

我在listview上有一个MouseEnter事件,每次鼠标移动到实体上都会触发该事件&在调试模式下,我可以深入查看发送者的详细信息&可以找到我想要的人的名字,但如何从代码中获取它

我想要的是:

int index = sender.GetCurrentlyHoveredOverItem();
我不想把我试过的所有东西都列出来,从而使这篇文章过于复杂,但是如果你想知道更多的信息,请告诉我


提前感谢您的帮助

如果您正在使用MVVM

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

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

将工具提示的
DataContext
绑定到
HoveredPersonListViewModel
,并将其组成控件绑定到相应的属性。

因此您拥有列表(ListView)的集合(ItemsControl),并且需要工具提示特定于其中一个内部列表中的特定元素,我理解对了吗


如果是这样,为什么不创建一个
ListView.ItemTemplate来解决这个问题呢?

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

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


很遗憾,您无法绑定
IsMouseOver
,因为它是只读的。当然可以执行
OneWayToSource
绑定,但尝试时会出现此错误
错误MC3065:“IsMouseOver”属性是只读的,无法从标记中设置
@Meleak,有多种方法可以将只读属性推送到ViewModel中。看。@Joe White:是的,这个问题可以用很多方法解决。这不是我评论的意思,感谢您指出,因为我在评论中显然没有明确说明:)我的意思是,我认为应该可以为只读属性(如
IsMouseOver
)执行
OneWayToSource
绑定。感谢您花时间寻找解决方案。我没有试过这样做,看看它是否适合我,而是使用了一个ItemTemplate(见上面H.B.的帖子)。也许我把这个复杂化了&寻找一个比需要的更难的解决方案,但是知道什么是可能的是有用的:)谢谢H.B。我真的需要学习更多关于模板的知识,因为这是一个如此简单的解决方案,但它确实做到了我想要的。我设置了一个ListView.ItemTemplate,其中一个TextBlock绑定到人的姓名,并在TextBlock上设置了一个MouseEnter事件。通过鼠标事件,我可以访问当前悬停项(或至少是当前移动项)的名称&然后我可以执行该方法来检索该人员的相关信息,然后将TextBlock工具提示绑定到该信息。非常感谢。