我遇到了一些麻烦,我需要帮助!如何从类中提取和捕获鼠标事件(不从控件继承)?
我的背景:显示一个虚拟地球3D地图上的代码生成多边形
WPF Windows应用程序。
我的问题:
无法打开生成的多边形成 “可点击项目”。迄今所采取
步骤:
我的第一个方法是使用VE的活动连接管道,这样做无非就是“看”超募的3D地球仪控制的所有事件并返回所有内容的列表存在于点击位置。虽然它有效,但每次点击鼠标时我都会得到一个完美的偏移量,使得这种方法现在无用。
我的第二种方法是将鼠标单击处理程序附加到多边形。为此,我创建了这个类:
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");
}
所以,我的代码运行,多边形得到渲染,但没有发生点击事件。留下以下问题:
-Am我做错了吗?我应该如何附加所有的管道来从WPF上的类(不从控件继承)捕获并引发鼠标事件?
-有关如何解决这个问题的想法?
感谢您的阅读和与此事有关的时间!
PS:如果有人知道一个更好的方式将事件附加到Virtual Earth的多边形,我所有的耳朵=)
使用snoop来查看Click事件是否被触发,如果是,则由可视树中的某些控件处理。 –
@RFLG,做MouseEtner/MouseLeave的工作? – 2011-11-23 23:37:28
@开王:你能详细谈谈'史努比'的情况吗? – RFLG