Вопрос по user-controls, windows, elementhost, winforms – Application.Current в ElementHost является нулевым

16

Я использую WPF UserControl в моих личных библиотеках. Libs включены в мои программы WPF и WindowsForms. Теперь мой UserControl должен показать новое (WPF) окно. В новом окне я хочу установить владельца. Я делаю это так:

dialog.Owner = Application.Current.MainWindow;

Это работает нормально, если я использую UserControl в программе WPF.

Когда я использую UserControl в моей программе WindowsForms (я устанавливаю UserControl в ElementHostelementHost.Child = ...) являетсяApplication.Current ноль.

Это не хорошо, и моя программа выдает исключение.

ПочемуApplication.Current ноль?

Когда я вызываю новый System.Windows.Application (); Во второй раз из формы Windows появляется сообщение об ошибке "Невозможно создать более одного экземпляра System.Windows.Application в одном и том же домене приложений." На самом деле из моего приложения Windows, когда я закрываю форму System.Windows.Application.Current & quot; объект становится нулевым, и когда я снова открываю форму из главного окна, он пытается создать новый объект Application () и со второго раза происходит сбой. Любое решение или обходной путь, пожалуйста ... Mathiyazhagan

Ваш Ответ

1   ответ
37

Application.Current Специфично дляWPF Application.
когда вы используете элементы управления WPF в приложении WinForms, вам нужно инициализировать экземпляр приложения WPF. Сделайте это в вашем приложении WinForms.

if ( null == System.Windows.Application.Current )
{
   new System.Windows.Application();
} 
Очень полезная информация - я пишу надстройки для ArcGIS, и при создании надстройки WPF необходимо использовать Application.Current в коде WPF.
вы проверили (null == System.Windows.Application.Current)?
ооо. Ура! Спасибо. Это именно то, что я был после: D
Вы не должны создавать второй Application Context, так как у вас будет одновременно запущено два приложения, это означает, что у вас также будет два диспетчера пользовательского интерфейса. Тогда вы можете потерять контроль над своим приложением.
Когда я вызываю новый System.Windows.Application (); Во второй раз из формы Windows появляется сообщение об ошибке "Невозможно создать более одного экземпляра System.Windows.Application в одном и том же домене приложений."

Похожие вопросы