В моем приложении есть кнопка "открыть файл". Перед запуском OpenFileDialog, он спрашивает, хочет ли пользователь сохранить текущий файл, и если они это сделают, он запускает SaveFileDialog. Затем он запускает OpenFileDialog. Довольно стандартный материал.
Моя проблема в том, что Silverlight затем видит метод OpenFileDialog.ShowDialog() как не инициированный пользователем, и я получаю исключение SecurityException.
Есть ли какой-либо известный разумный способ избежать этого исключения? Конечно, это довольно стандартный сценарий?
Приложение находится в браузере.
Любые идеи приветствуются
EDIT:
Извините, не разрешено выпустить фактический код:( Логика довольно проста: в psuedocode кнопка "OpenFile" нажимает событие, вызывает метод вроде:
* Запустите новое сообщение SL с просьбой сохранить сначала.
* В окне сообщений да/нет: -Если нет, перейдите к загрузке -Если Да, запустите SaveFileDialog.ShowDialog(), перейдите в Load
* Нагрузка: Запустить диалоговое окно "Открыть файл"
ИЗМЕНИТЬ 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;
}
}
}