Можно ли смешивать WPF и WinForms в приложении? - PullRequest
38 голосов
/ 01 февраля 2009

Можно ли использовать элементы управления WPF и Windows в одном приложении? Насколько сложна или практична идея?

Ответы [ 6 ]

36 голосов
/ 12 августа 2010

Довольно просто разместить элементы управления WPF в приложении WinForms с адаптером ElementHost или элементы управления WinForms в приложении WPF с адаптером WindowsFormsHost. Однако в Интернете не так много ресурсов, показывающих, как это сделать. В процессе изучения того, как сделать это для себя, я быстро обнаружил внутреннюю симметрию между двумя путями. Я превратил все свои заметки в статью, сравнивающую и сопоставляющую эти симметрии с использованием уникального подхода: статья - это на самом деле две параллельные статьи, подробно сравнивающие каждый шаг, начиная от создания пользовательского элемента управления в одной технологии до размещения его в применение в «противоположной» технологии. Моя статья, опубликованная на SimpleTalk.com в августе 2010 года, доступна здесь: Смешивание WPF и WinForms .

Для полноты вот пара хороших ссылок на MSDN, по одной на каждый путь. На самом деле, демонстрационное решение, сопровождающее мою статью, начиналось с обоих:

14 голосов
/ 01 февраля 2009

Я полагаю, что есть элемент управления WindowsFormsHost, который вы можете добавить в свои приложения WPF, который будет возвращать код WinForms:

http://blogs.msdn.com/ivo_manolov/archive/2007/07/26/wpf-win32-interop-part-1-hosting-winforms-controls-in-wpf-windows.aspx

4 голосов
/ 02 февраля 2009

При размещении контента, отличного от WPF (будь то HTML, WinForms или Win32), у вас будут проблемы Воздушное пространство . Это означает, что вы не можете полностью компостировать контент WPF с размещенным контентом. Вы также не можете анимировать его и т. Д. Есть некоторые интересные проблемы, связанные с просмотром прокрутки , смотрите здесь для получения дополнительной информации и исправления .

4 голосов
/ 01 февраля 2009

Мы разместили довольно сложные элементы управления WPF в существующем приложении LOB WinForms. Это может быть сделано, но у нас были проблемы (некоторые, без сомнения, вызваны крутой кривой обучения). Это в первую очередь связано с тем, что события потери фокуса не запускаются, как ожидается, а также с проблемами с клавиатурой.

3 голосов
/ 01 февраля 2009

Вы также можете использовать элементы управления HWNDSource и HWNDHost для встраивания элементов управления WPF в приложение WinForms (или любое Win32).

2 голосов
/ 02 февраля 2009

Да, вы можете использовать как Windows Forms в приложении WPF, так и элементы управления WPF в Windows Forms. Разумное приложение www.novamind.com представляет собой удачное сочетание двух технологий.

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