天天看点

silverlight 让右上角关闭按钮 无效

有一个需求,在弹出的页面里,用户没有进行某个操作时,不允许退出弹出页面。项目是silverlight做的。弹出页面是个silverlight子窗口。vs会自动在页面右上角有个X按钮。

先上一段开始写的屏蔽右上角关闭按钮的代码,为页面添加closing事件。

以上代码在winform和wpf里面满足要求。让页面右上角的X关闭按钮失效。

但在silverlight里面,e.Cancel = true;不能阻止页面的关闭。

然后翻阅msdn。结论:在silverlight里面微软为了防止恶意的流氓软件。做了以下两个限制。

1,开始运行silverlight程序,不能自动全屏。必须有第三方触发的事件全屏代码才有效。

2,弹出层的右上角X按钮。后台取消关闭事件的代码无效。即e.Cancel = true无效。

原来如此,这些是在一定程度上貌似阻止了流氓软件,但却给Coder们也造成了不小的压力。 偶然一天,突然想到当silverlight程序在非调试情况下,如果程序出现异常,silverlight不会死掉(微软的安全机制),而是执行到出现异常代码的地方停止。不会造成界面的锁定和死掉。那既然如此,为什么我们不用一个异常来阻止X按钮的关闭事件呢?

修正后的代码

总结: 笔者愚钝,以上实现方法有点恶心。但只有实现功能,总是好的。希望园友能给出更好的解决方案。

QQ:519841366

本页版权归作者和博客园所有,欢迎转载,但未经作者同意必须保留此段声明,

且在文章页面明显位置给出原文链接,否则保留追究法律责任的权利

继续阅读