当我尝试在Silverlight中打印一些内容时,我得到了臭名昭着的“Dialogs必须是用户启动的”安全例外。如您所见,对话框由用户启动,可以是:
John Papa couldn't help me much out neither,因为我没有设置断点。 Mr MSDN thinks it could also be that I'm just taking too long,但这是一个尽可能简单的演示应用程序。
有什么想法吗?我猜这是一个Visual Studio的怪癖,也许是一些扩展干扰,因为当我在它之外启动应用程序时似乎有效。我首先想到的可能是代码合同正在干扰他们的IL编织,但是他们在这个项目中被停用了。
更新:这只是一个从文件系统本地运行的简单Silverlight应用程序。当我执行“开始调试”时,Visual Studio会在Debug resp中创建一个包含Silverlight应用程序的托管HTML文件。释放项目的文件夹,使用该HTML文件启动Internet Explorer并将调试器附加到其中。
更新2:当我创建一个Web项目来托管Silverlight应用程序并在IIS上为它创建虚拟目录时,我也会遇到同样的错误。
我可能还想补充一点,我在其他Silverlight项目中打印没有问题,无论其托管方案如何。
更新3:我下载了FireFox并且它可以工作,我用它调试时没有收到错误。所以它似乎与我的IE8有关。我上传了解决方案:
http://dl.dropbox.com/u/10401470/Code/Demos/PrintingDemo.zip
我想知道是否有人可以复制?
任何人都知道我应该向哪个团队提交错误报告? Silverlight团队? IE团队? VS Debugger团队?
答案 0 :(得分:1)
我也经历过这种奇怪的行为。标准按钮单击事件,立即调用OpenFileDialog
。它在调试时经常会产生相同的错误,但最终会在多次单击按钮时被哄骗。
然而,当构建为一个版本时(或者可能只是通过运行相同的Xap而没有连接到浏览器的调试器)问题就会消失。
答案 1 :(得分:1)
尝试删除
if(SightPaleceListBox.Items.Count > 0)
答案 2 :(得分:1)
我能够重现这一点。您已经处理了Click两次,一次在XAML中再次处理代码。请参阅您的MainPage.xaml
<Button x:Name="PrintButton"
Content="Gotta print 'em!" Margin="8"
Click="PrintButton_Click" />
不要为此感到难过。我上次通过循环中错误的Print打印了。
答案 3 :(得分:0)
我遇到了同样的问题,发现原因是以下这一行:
cnvsMain.Children.Remove(PrintPagePlaceHolder);
cnvMain位于用户按下“打印”按钮的页面上(我试图将其从该页面中删除,以便将其添加到我要打印的画布上)。
我的提示:尝试逐行评论行,直到找到导致问题的行为止。而不是尝试解决它。