Прямой ответ: вы не можете, Silverlight SaveFileDialog может быть открыт только как прямой результат взаимодействия с пользователем, такого как нажатие кнопки.
Решение проблемы такого рода (где вы хотите загрузить файл) - отправить XML на сервер для хранения, скажем, в объекте сеанса или в виде файла. Ответ - это некоторый дескриптор, который вы можете использовать для получения XML, например GUID.
Затем можно использовать стандартную навигацию, поместив GUID в строку запроса URL-адреса. Принимающий скрипт (в данном случае ashx) может извлечь ранее отправленный XML, используя дескриптор, указанный в URL.
Вы также захотите закодировать ответ на стороне сервера следующим образом: -
context.Response.ContentType = imageFactory.ContentType;
context.Response.AddHeader("Content-Disposition", "attachment;file=someimage.jpg");
imgStream.WriteTo(context.Response.OutputStream);
imgStream.Close();
это заставит браузер отобразить «Открыть или сохранить диалог». Обычно состояние навигации текущего окна поддерживается, поэтому ваше SL-приложение должно оставаться в его текущем состоянии, но я на самом деле не проверял это.
Кстати, обратите внимание, нет Response.End (), это ужасно, если вы можете избежать этого, то сделайте это.