2010-03-09 101 views
2

所以我有上有一些用戶控件在頁面上一個網格。每個UserControl都有一個MouseLeftButtonDown事件註冊,就像Grid一樣。在將事件添加到網格之前,用戶控件上的事件工作正常。但是現在我已經在網格上發生了事件,只有網格事件觸發,無論我點擊哪個位置。 UseControls都沒有捕獲事件。的Silverlight:事件處理程序問題

我需要做什麼才能讓UserControl上的MouseLeftButtonDown事件觸發,同時在網格上還有MouseLeftButtonDown事件?

回答

2

你描述的是非常不尋常的。

經常會發生在這種情況下,這兩個事件火什麼。由於MouseLeftButtonDown爲冒泡事件,當你點擊一個用戶控件它激發了MouseLeftButtonDown,如果與它相連的處理程序沒有在MouseButtonEventArgs參數的Handled屬性設置爲True,那麼該事件將向上冒泡到父等等。如果父控件還有代碼附加到代碼將會運行的MouseLeftButtonDown事件。

肯定,事實上,用戶控件事件不火或者是說你碰巧看到,網格事件總是射擊。如果您完全確定將事件處理程序附加到網格實際上可以防止UserControl事件觸發,那麼您可以使用一個小的Repro來編輯您的問題,但很難看出情況如何。

+0

事實證明,該事件被解僱,但在電網事件的方法調用是做一些相互抵消的用戶控件事件的影響,因此出現了,這是不被調用。添加一個簡單的檢查來查看鼠標事件參數的OriginalSource屬性是否爲Grid,如果是,則執行必要的操作。 – 2010-03-09 14:53:45