Еще одна хитрость в исключении безопасности «Диалоги должны быть инициированы пользователем» при печати Silverlight - PullRequest
2 голосов
/ 06 ноября 2010

Я получаю печально известное исключение безопасности «Диалоги должны быть инициированы пользователем», когда я пытаюсь напечатать некоторые вещи в Silverlight. Как видите, диалоговое окно инициируется пользователем так, как это может быть:

Silverlight printing

Джон Папа тоже не мог мне помочь, , потому что у меня нет установленной точки останова. Мистер MSDN считает, что это может быть слишком долго , но это демонстрационное приложение, настолько простое, насколько это возможно.

Есть идеи? Я предполагаю, что это особенность Visual Studio, возможно, некоторые расширения мешают, так как кажется, что все работает, когда я запускаю приложение вне его. Сначала я подумал, что, возможно, кодовые контракты мешают их переплетению IL, но они отключены для этого проекта.

Обновление: это просто простое приложение Silverlight, которое запускается локально из файловой системы. Когда я выполняю «Начать отладку», Visual Studio создает файл отладки HTML, содержащий приложение Silverlight в Отладке, соответственно. Освободите папку проекта, запустите Internet Explorer с этим HTML-файлом и присоедините к нему отладчик.

Обновление 2: я также получаю ту же ошибку при создании веб-проекта для размещения приложения Silverlight и создания виртуального каталога для него в IIS.

Могу также добавить, что у меня нет проблем с печатью в других проектах Silverlight, независимо от сценариев их размещения.

Обновление 3: я загрузил FireFox, и он работает, я не получаю сообщение об ошибке при отладке. Так что, похоже, это связано с моим IE8. Я загрузил решение:

http://dl.dropbox.com/u/10401470/Code/Demos/PrintingDemo.zip

Интересно, кто-нибудь может воспроизвести?

Кто-нибудь получил представление, в какую команду я должен отправить сообщение об ошибке? Команда Silverlight? IE команда? Команда VS Debugger?

Ответы [ 4 ]

1 голос
/ 07 января 2012

Я могу воспроизвести это.Вы обрабатывали Click дважды, один раз в XAML, другой раз в коде.Смотрите ваш MainPage.xaml

<Button x:Name="PrintButton"
   Content="Gotta print 'em!" Margin="8" 
   Click="PrintButton_Click" />

Не расстраивайтесь из-за этого.Я сделал это в прошлый раз с помощью неуместной печати внутри цикла.

1 голос
/ 31 марта 2011

Попробуйте удалить

if(SightPaleceListBox.Items.Count > 0)

1 голос
/ 06 ноября 2010

Я также испытал это странное поведение. Стандартное событие нажатия кнопки, сразу вызывающее OpenFileDialog. Он часто генерирует ту же ошибку при отладке, но в конечном итоге заставляет работать, когда кнопка нажимается несколько раз.

Однако при сборке в виде релиза (или, возможно, просто при запуске того же Xap без отладчика, подключенного к браузеру) проблема исчезнет.

0 голосов
/ 02 мая 2011

У меня была такая же проблема, и я обнаружил, что причина была в следующей строке:

cnvsMain.Children.Remove(PrintPagePlaceHolder);

cnvMain находится на странице, на которой пользователь нажал кнопку «Печать» (я пытался удалить ее из этойстраницы, чтобы добавить его на холст, который я собирался напечатать).

Мой совет: старайтесь комментировать строки одну за другой, пока не найдете, какая строка вызывает проблему.Чем пытаться обойти это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...