В моем приложении есть кнопка «Открыть файл».Перед запуском OpenFileDialog он спрашивает, хочет ли пользователь сохранить текущий файл, и если он это делает, он запускает SaveFileDialog.Затем он запускает OpenFileDialog.Довольно стандартные вещи.
Моя проблема в том, что silverlight тогда видит метод OpenFileDialog.ShowDialog () не инициированным пользователем, и я получаю исключение SecurityException.
Есть ли какой-либо известный разумный способ избежать этого исключения?Конечно, это довольно стандартный сценарий?
Приложение находится в браузере.
Любые идеи приветствуются
РЕДАКТИРОВАТЬ:
Извините, выпуск запрещенФактический код :( Однако логика довольно проста: в psuedocode событие нажатия кнопки «OpenFile» вызывает метод, подобный следующему:
* Запускает новое SL-сообщение с вопросом, сохранять ли сначала.
* В окне сообщения щелкнуло да / нет: -Если Нет, перейдите к Загрузить -Если Да, запустите SaveFileDialog.ShowDialog (), перейдите к Загрузить
* Загрузить: запустить диалог открытия файла
РЕДАКТИРОВАТЬ 2: Мини-программа ...
XML-контент для главной страницы:
<Grid x:Name="LayoutRoot" Background="White">
<Button Content="Open" Click="Button_Click"/>
</Grid>
Код:
using System.Windows;
using System.Windows.Controls;
namespace SilverlightApplication15
{
public partial class MainPage : UserControl
{
AskWindow aw = new AskWindow();
public MainPage()
{
InitializeComponent();
aw.Closed += new System.EventHandler(aw_Closed);
}
private void Button_Click(object sender, RoutedEventArgs e)
{
aw.Show();
}
private void aw_Closed(object sender, System.EventArgs e)
{
if (aw.DialogResult == true)
{
SaveFileDialog svd = new SaveFileDialog();
svd.ShowDialog();
}
OpenFileDialog ofd = new OpenFileDialog();
ofd.ShowDialog();//Causes security exception
}
}
public class AskWindow : ChildWindow
{
public AskWindow()
{
Button b = new System.Windows.Controls.Button();
b.Click += new System.Windows.RoutedEventHandler(b_Click);
b.Content = "Yes, save it";
this.Content = b;
}
private void b_Click(object sender, System.Windows.RoutedEventArgs e)
{
this.DialogResult = true;
}
}
}