2009-10-15 69 views
0

強制鼠標事件我有2個用戶控件:UC1和UC2在Silverlight 3

在uc1.MouseOver,在大小UC2增加。在uc1.MouseLeave上,uc2返回到原始大小。

在uc1.MouseLeftButtonUp上,打開一個彈出窗口。但是,當彈出窗口關閉後,uc1.MouseLeave不會被觸發,因此uc2不會返回到原始大小。

解決方案是讓uc2也訂閱uc1.MouseLeftButtonUp,並執行與uc1.MouseLeave相同的代碼,但這不是一個非常優雅的解決方案,因爲我必須對訂閱uc1的所有內容.MouseLeave。

有沒有辦法強制MouseLeave事件編程?

回答

2

考慮在您的.cs文件中創建一個mouseleave(和mouseleftbuttonup)事件調用的方法。

+0

這就是我現在正在做的事(這就是我的意思是「不雅」的解決方案) – eriksmith200 2009-10-15 12:35:50

+0

如果您需要既響應事件又響應其他事件的代碼,它不是不雅觀。這是重構。 – 2009-10-16 16:03:55

0

試試這個,

訂閱上MainPage.xaml.cs中(甚至在彈出的關閉按鈕點擊)的事件,你把這個事件的結束每個事件結束後的處理代碼:

e.Handled = true;

+0

ChildWindow.Closed事件的事件參數沒有Handled屬性 – eriksmith200 2009-10-15 12:42:52

+0

是不是通過單擊事件關閉Popup?這是點擊甚至沒有這個e.Handled財產。 – 2009-10-15 13:44:39

+0

我實際上使用了一個ChildWindow,對不起! – eriksmith200 2009-10-15 13:46:35