我已经做了一些努力解决这个问题,但还没有找到适合我的解决方案。
基本上我有一个<ItemsControl>
,<ItemsControl.ItemsTemplate>
我有一个<ListView>
,显示了一些人的姓名。将列出0到5个人的名字。
我想要做的是提供一个工具提示弹出窗口,其中包含与正在悬停的实体相关的其他信息。如何获取我当前正在悬停的项目的索引(或名称等内容),以确保工具提示显示的内容适用于正确的人?!
我在listview上有一个MouseEnter事件,每当鼠标在实体上移动时触发该事件。在调试模式下,我可以深入了解发件人的详细信息和可以找到我想要的人名,但我如何从代码中找到它?
我想要的是:
int index = sender.GetCurrentlyHoveredOverItem();
我不想通过列出我尝试的所有内容来复杂化这篇文章,但如果您想了解更多信息,请告知我们。
提前感谢您的帮助!
答案 0 :(得分:1)
正如其他人暗示的那样,但没有明确说明,ListView中的项目应该直接实现工具提示,如果需要,使用ItemTemplate,而不是全局级别。
<ListViewItem ToolTipService.ToolTip="Tooltip for this item" />
答案 1 :(得分:0)
如果您正在使用MVVM ......
将IsMouseOver
绑定到VM中的属性,例如“CurrentlyHoveredPersonList”。使用OneWayToSource
。
创建另一个名为“HoveredPersonListViewModel”的VM属性,其中包含工具提示所需的所有详细信息。设置CurrentlyHoveredPersonList
后,填充HoveredPersonListViewModel
并提出属性更改通知。您将获得对该对象的实际引用,因此您可能不需要索引,但如果这样做,您可以使用IndexOf(object)
从视图模型中的源列表中获取它。
将工具提示的DataContext
与HoveredPersonListViewModel
及其组成控件绑定到其相应的属性。
答案 2 :(得分:0)
所以你有一个列表(ListView)的集合(ItemsControl),你需要工具提示特定于其中一个内部列表中的特定元素,我是否理解正确?
如果是这样,为什么不创建一个ListView.ItemTemplate
来处理它?</ p>