我遇到了一些麻煩,我需要幫助!如何從類中提取和捕獲鼠標事件(不從控件繼承)?
我的背景:顯示一個虛擬地球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