我遇到了一些麻烦,我需要帮助!
我的上下文:
WPF Windows应用程序,它在Virtual Earth 3D地图上显示代码生成的多边形。
我的问题:
无法将生成的多边形转换为“可点击的项目”。
到目前为止采取的步骤:
我的第一种方法是使用VE的事件附加管道,这只不过是“观察”通过3D globe控件引发的所有事件,并返回点击位置上存在的所有内容的列表。虽然它有效,但每次点击鼠标都会得到很大的偏移,这使得这种方法暂时无用。
我的第二种方法是将鼠标点击处理程序附加到多边形。为此,我创建了这个类:
public class ExtendedPolygon:PolygonGeometry
{
}
扩展了原始的PolygonGeometry对象。然后我按照这个线程giving classes click events C#的建议来实现事件“监听器”和处理程序,如下所示:
public event EventHandler<MouseEventArgs> Click;
protected void OnClick(MouseEventArgs e)
{
EventHandler<MouseEventArgs> handler = Click;
if (handler != null)
{
handler(this, e);
}
}
internal void CheckIfClicked(MouseEventArgs e)
{
OnClick(e);
}
然后(为了简单起见,在测试时),我在我的视图后面的代码中附加了所有事件:
polygon.Click +=new EventHandler<MouseEventArgs>(polygon_MouseClick);
void pol_MouseClick(object sender, MouseEventArgs e)
{
ShowBox(" ShapeId:" + "I clicked");
}
因此,我的代码运行,多边形被渲染,但没有引发任何点击事件。请允许我提出以下问题:
- 我做错了吗?我应该如何附加所有管道以从WPF上的类(不从控件继承)捕获和引发鼠标事件?
- 关于如何解决这个问题的任何想法?
感谢您阅读并了解此事所花费的时间!
PS:如果有人知道更好的方法将事件附加到虚拟地球多边形,我全都耳朵=)答案 0 :(得分:0)
我没有看到实际调用CheckIfClicked的代码,在原始帖子中这是在OnMouseUp覆盖中完成的。您的应用中是否有类似代码中没有列出的类似代码?