列表框中相交项目的工具提示
本文关键字:项目 工具提示 列表 | 更新日期: 2023-09-27 18:20:18
类似于这里的博客文章,http://blogs.msdn.com/b/kaelr/archive/2010/08/11/zoomableapplication2-a-million-items.aspx
我的可缩放画布上有很多曲线。曲线相交且放置密集。我已经为形状添加了工具提示。
假设我有3条相交的曲线A、B、C(几何上不相同),它们在边界框内。现在,工具提示仅显示在所有形状之上的形状。
所有曲线都是可见的,但不知何故,每个曲线都有一个不可见的区域,鼠标悬停事件只针对顶部的形状触发,并为其显示工具提示。
如何为所有形状显示工具提示?
很抱歉,WPF没有内置此功能(据我所知)。您必须创建自己的ToolTipService。
基本上,当你的鼠标移动时,你必须对所有感兴趣的UI元素进行HitTest。然后,当它们被点击时,你将不得不显示你的自定义工具提示控件。
以下内容需要说明:
代码隐藏
private void WindowMouseMove(object sender, MouseEventArgs e)
{
EllipseGeometry hitArea = new EllipseGeometry(e.GetPosition(this), 5, 5);
VisualTreeHelper.HitTest(MainGrid, null, new HitTestResultCallback(ToolTipCallback), new GeometryHitTestParameters(hitArea));//MainGrid would be your ListBox
}
private HitTestResultBehavior ToolTipCallback(HitTestResult hitTestResult)
{
GeometryHitTestResult geometryHitTestResult = ((GeometryHitTestResult)hitTestResult);
if (geometryHitTestResult.VisualHit.GetType() == typeof(Rectangle))
{
Path potentialToolTip = (Path)geometryHitTestResult.VisualHit;
if (potentialToolTip.Tag.ToString().Contains("CustomToolTip"))
{
//Show Custom ToolTip
return HitTestResultBehavior.Stop;
}
}
return HitTestResultBehavior.Stop;
}