2009-10-15 26 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