.NET WPF: проблемы с повторным вызовом формы WPF из приложения WinForm - PullRequest
2 голосов
/ 21 июля 2011

Как гласит заголовок, я вызываю форму WPF из приложения WinForm (с несколькими классами в стеке вызовов) несколько раз.Первоначально WPF работал только один раз.После некоторого поиска в Google я обнаружил, что мне нужно было добавить ShutdownMode.OnExplicitShutdown в приложение WPF create.

Теперь, после добавления этого при выходе из первой формы WPF элемент управления никогда не возвращается из вызова «Выполнить» и фокусировки.возвращается в диалог WinForm.Если я выйду из этого, я наконец получу управление, возвращенное после запуска WPF.

Winform:

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
MainForm form = new MainForm();
Application.Run(form);

Предварительная инициализация WPF:

application = new System.Windows.Application
{
    ShutdownMode = System.Windows.ShutdownMode.OnExplicitShutdown
};

Вызов формы WPF:

ConfirmForm form = new ConfirmForm();
application.Run(form);

Что здесь происходит?:

1 Ответ

3 голосов
/ 21 июля 2011

Application.Run (как в WinForms, так и в WPF) - это блокирующий вызов, который запускает цикл обработки сообщений и возвращает его, когда приложение готово к выходу.

Вы должны просто вызвать Show(), который показывает Form или Window и немедленно возвращается.

Однако вам нужно будет позвонить ElementHost.EnableModelessKeyboardInterop, чтобы сообщить WPF об использовании цикла сообщений WinForms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...