Ошибка SaveFileDialog в WPF - PullRequest
2 голосов
/ 26 марта 2012

Я использую класс Microsoft.Win32.SaveFileDialog для сохранения своих файлов.Когда я сохранил файл и свернул приложение, я не могу восстановить его обратно.Это происходит только после того, как при использовании Microsoft.Win32.SaveFileDialog.Вот код:

Microsoft.Win32.SaveFileDialog dlg = new Microsoft.Win32.SaveFileDialog();
dlg.FileName = String.Format("{0} {1} {2}", ev["b"], ev["a"], ev["c"]);
dlg.DefaultExt = ".csv";
dlg.Filter = "Supported format (.csv)|*.csv";
Nullable<bool> result = dlg.ShowDialog();
if (result == true)
{
    string s = dlg.FileName;
    //other code
}

Файл успешно сохраняется, но я не знаю, как решить проблему с минимизацией.Кто-нибудь знает, что это может быть?

Ответы [ 2 ]

3 голосов
/ 26 марта 2012

WPF имеет все виды странных проблем модальности при отображении диалогов без родительских окон. Я не видел это непосредственно с SaveFileDialog, но я видел подобное поведение с другими диалогами. Попробуйте использовать перегрузку .ShowDialog (), которую вы передаете в родительское окно.

1 голос
/ 08 июня 2015

Я также столкнулся со странной проблемой модальности с WPF и Win32 SaveFileDialog / OpenFileDialog.

Что происходит:

  • Модальное состояние нарушается / полностью теряется, и можно щелкнуть главное окно, пока OpenFileDialog открывается с помощью ShowDialog ()

Когда это происходит:

  • Перед открытием OpenFileDialog была запущена задача
  • Отладчик разбивается на точку останова перед запуском задачи

Просто создайте простое приложение WPF с событием нажатия кнопки:

    private void Button_Click(object sender, RoutedEventArgs e)
    { // <-- Breakpoint sits here

        Task.Run(() => {}).Wait();

        new Microsoft.Win32.OpenFileDialog().ShowDialog();
    }

Использование перегруженной функции ShowDialog(Window owner) решает эту проблему.

...