Работя върху приложение Silverlight 3 с C#. Бих искал да позволя на потребителя да изтегли изображение от приложението Silverlight. Използвам SaveFileDialog, за да изпълня задачата за изтегляне на файл. Потокът върви по следния начин:
- Потребителят кликва върху бутона за изтегляне в приложението SL.
- Извиква се извикване на уеб услуга за получаване на изображението от сървъра
- OnCompleted асинхронен манипулатор на събития на извикването на уеб метода се извиква и получава двоичното изображение от сървъра
- В рамките на манипулатора на събитие OnCompleted SaveFileDialog подкани потребителя да запази изображението на компютъра.
- Поточно предаване на изображението към файла на твърдия диск на потребителя.
Използвам следния код във функция, която се извиква от манипулатора на събитие OnCompleted, за да изпълни подканата SaveFileDialog и след това стрийминг към файл.
SaveFileDialog dialog = new SaveFileDialog();
dialog.Filter = "JPG Files|*.jpg" + "|All Files|*.*";
bool? dialogResult = dialog.ShowDialog();
if (dialogResult == true)
{
using (Stream fs = (Stream)dialog.OpenFile())
{
fs.Write(e.Result, 0, e.Result.Length);
fs.Close();
}
}
SaveFileDialog ще изведе грешката „Диалоговите прозорци трябва да бъдат инициирани от потребителя“. когато извиквате метода ShowDialog в горния код. Какво може да ми липсва тук? Как да се преодолее това?