Я обнаружил довольно странное поведение ...
Вот как воспроизвести проблему:
private void Application_Startup(object sender, StartupEventArgs e)»Form1 f1 = new Form1(); f1.ShowDialog();Window1 w1 = new Window1(); w1.Show();Итак, по сути, я создаю приложение WPF, которое отображает winform. Затем winform отображает окно WPF.
При первом отображении окна WPF все работает нормально. Если он закрыт, а затем снова открыт, я получаю исключение! Я также могу открыть несколько окон WPF, нажав кнопку несколько раз. Однако, как только последний будет закрыт, я больше никогда не смогу открыть другой без исключения ...
Я также пробовал различные советы, предложенные на http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/442782b1-00a1-4e2e-9cc6-ae99b6699126/, но они не помогают.
Почему это происходит?





Поведение при выключении приложений Wpf по умолчанию (указанное на вкладке «Приложение» в свойствах проекта в VS или с помощью атрибута ShutdownMode в Application.Xaml) - «При закрытии последнего окна». Это означает, что когда вы закрываете созданное вами окно Wpf, Wpf завершает работу инфраструктуры приложения, поэтому любое последующее создание окна вызовет исключение.
Вы можете избежать этой проблемы, установив для режима выключения значение «При явном выключении» («OnExplicitShutdown» в Xaml). Затем вам нужно будет вручную вызвать Application.Current.Shutdown явно, когда вы хотите, чтобы приложение завершало работу (например, когда форма winforms закрыта).
Вы показали xaml, поскольку я добавил WPF Windows в свое приложение WinForms, у меня нет app.xaml, поэтому в Program.cs я добавил его, когда создал новый экземпляр System.Windows.Application. System.Windows.Application.Current.ShutdownMode = ShutdownMode.OnExplicitShutdown;
+1. Если вы завершаете процесс (например, winform), вам все равно нужно вызывать Application.Current.Shutdown ()? Если да, что произойдет, если вы этого не сделаете?