Действительно ли возможно иметь проект, содержащий и Winforms и WPF?

Действительно ли возможно иметь проект, содержащий и Winforms и WPF?

Скажите проект WinForm, который преобразовывается шаг за шагом (форма формой) в WPF один, будет возможно иметь Winform, открывающийся на кнопке и WPF одно открытие на другой кнопке?

11
задан serhio 11 April 2011 в 09:15
поделиться

4 ответа

Да. Вы должны выбрать одну технологию для отображения каждого физического окна и элемента управления в вашем приложении, но нет причин, по которым вы не можете смешивать и сочетать.

Например:

  • Окно WinForms может отображать окно WPF.
  • Окно WPF может отображать окно WinForms.
  • Окно WinForms может содержать содержимое WPF (см. Элемент управления ElementHost ).
  • Окно WPF может содержать элементы управления WinForms (см. Элемент управления WindowsFormsHost ).
15
ответ дан 3 December 2019 в 06:20
поделиться

Я не вижу возражений против этого (у меня в окнах WPF приложения WinForms) Во многих примерах использовался MessageBox.Show, который является частью Windows.Forms. Конечно, вы должны переписать все окна, а не только элементы управления.

0
ответ дан 3 December 2019 в 06:20
поделиться

Отлично работает. Можно иметь окна WPF в Windows Forms и окна Windows Forms в WPF

http://msdn.microsoft.com/en-us/library/ms745781.aspx

http://msdn.microsoft.com/en -us / library / system.windows.forms.integration.windowsformshost.aspx

2
ответ дан 3 December 2019 в 06:20
поделиться

То, что вы, возможно, ищете - это элемент управления ElementHost. Он позволяет вам брать содержимое WPF и размещать его в окне Windows Forms. Подробности здесь:

http://msdn.microsoft.com/en-us/library/ms745781.aspx

Существует также элемент управления, позволяющий делать обратное: размещать содержимое Windows Forms внутри WPF:

http://nayyeri.net/host-windows-forms-controls-in-wpf

Между этими двумя элементами можно перемещать "разделительную линию" между WPF и Windows Forms с определенной степенью гибкости.

Есть одна оговорка, о которой нужно помнить. Windows Forms работает внутренне в терминах HWND... окна, управляемого старым оконным менеджером Windows (который обрабатывает z-порядок). WPF этого не делает... Дерево WPF обычно отображается в одном HWND', и именно WPF управляет такими вещами, как z-order. Для вас это означает, что z-order не всегда работает так, как вы ожидаете, и есть вещи, которые вы не можете делать с размещенными элементами управления Windows Forms, которые вы можете делать с традиционными элементами WPF. (На самом деле есть способ решить эту проблему, но он включает в себя периодическое рендеринг HWND в битовую карту памяти, рендеринг этой карты в поверхность WPF, а затем перенаправление событий, направленных на поверхность WPF, на базовый HWND. Это мощная, но сложная и трудная задача.)

.
1
ответ дан 3 December 2019 в 06:20
поделиться
Другие вопросы по тегам:

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