Вызов OpenFileDialog Silverlight из JavaScript - PullRequest
1 голос
/ 28 апреля 2010

Я пытаюсь вызвать функцию в компоненте Silverlight 4, чтобы открыть диалоговое окно файла и загрузить файл на сервер. В Silverlight все работает хорошо, но я бы хотел вызвать компонент из JavaScript. Поэтому я вызываю обработчик нажатия кнопки из C # -функции, которая является [ScriptableMember]. Я получаю следующую ошибку при вызове функции:

System.Security.SecurityException: Dialogs must be user-initiated. 
at System.Windows.Browser.ManagedObjectInfo.Invoke(ManagedObject obj, InvokeType
invokeType, String memberName, ScriptParam[] args) at
System.Windows.Hosting.ManagedHost.InvokeScriptableMember(IntPtr pHandle, Int32 nMemberID,
Int32 nInvokeType, Int32 nArgCount, ScriptParam[] pArgs, ScriptParam& pResult,
ExceptionInfo& pExcepInfo)

Я основал свой код на учебнике Тима Хойера, который можно найти здесь: http://www.silverlight.net/learn/videos/silverlight-videos/openfiledialog-and-file-upload/

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

Это новая политика от Silverlight 4? Можно ли по-прежнему использовать Silverlight за экранами для загрузки файла? Любая помощь приветствуется.

1 Ответ

2 голосов
/ 28 апреля 2010

Я верю в Silverlight 2, возможно, это было разрешено, но с тех пор это не так. Это было критическое изменение поведения, требующее, чтобы действие было «инициировано пользователем» через действие пользователя в Silverlight: что-то вроде нажатия клавиши или щелчка мышью на кнопке с обработчиком события щелчка.

Нет способа открыть и открыть диалоговое окно файла другим способом.

...