Поддерживаемые сценарии взаимодействия Windows Presentation Foundation и Windows Forms
Обновлен: Ноябрь 2007
WPF и Windows Forms представляют собой две различные архитектуры для создания интерфейсов приложений. Пространство имен System.Windows.Forms.Integration предоставляет классы, обеспечивающие общие сценарии взаимодействия. Ключевыми классами, реализующими возможности взаимодействия, являются WindowsFormsHost и ElementHost. В этом разделе описано, какие сценарии взаимодействия поддерживаются, а какие нет.
![]() |
---|
Особое внимание уделено сценарию гибридного элемента управления. Гибридный элемент управления состоит из элемента управления одной технологии и вложенного в него элемента управления другой технологии. Это также называется вложенное взаимодействие. В многоуровневом гибридном элементе управления более одного уровня вложения. Примером многоуровневого вложенного взаимодействия является элемент управления Windows Forms, который содержит элемент управления WPF, содержащий другой элемент управления Windows Forms. Многоуровневые гибридные элементы управления не поддерживаются. |
В этом разделе содержатся следующие подразделы.
- Вложение элементов управления Windows Forms в приложения, основанные на Windows Presentation Foundation
- Вложение элементов управления Windows Forms в приложения, основанные на Windows Presentation Foundation
- Связанные разделы
Вложение элементов управления Windows Forms в приложения, основанные на Windows Presentation Foundation
Если в элемент управления WPF вложен элемент управления Windows Forms, поддерживаются следующие сценарии взаимодействия:
В элемент управления WPF с помощью XAML могут быть вложены один или несколько элементов управления Windows Forms.
С помощью кода в него могут быть вложены один или несколько элементов управления Windows Forms.
В него могут быть вложены контейнерные элементы управления Windows Forms, содержащие элементы управления Windows Forms.
В него может быть вложена форма с отношением «главный-подчиненный» с главным WPF и подчиненными Windows Forms.
В него может быть вложена форма с отношением «главный-подчиненный» с главным Windows Forms и подчиненными WPF.
В него могут быть вложены один или несколько элементов управления ActiveX.
В него могут быть вложены один или несколько составных элементов управления.
С помощью Язык XAML (Extensible Application Markup Language) в него могут быть вложены гибридные элементы управления.
С помощью кода в него могут быть вложены гибридные элементы управления.
Поддержка макета
В следующем списке перечислены известные ограничения при попытке элемента WindowsFormsHost интегрировать его вложенный элемент управления Windows Forms в систему макета WPF.
В некоторых случаях размеры элемента управления Windows Forms изменять нельзя или же их можно изменять, но только в фиксированных пределах. Например, элемент управления Windows FormsComboBox поддерживает только одну высоту, которая определяется размером шрифта элемента управления. В динамическом макете WPF, в котором предполагается, что элементы можно растянуть по вертикали, вложенный элемент управления ComboBox не растягивается, как ожидалось.
Элементы управления Windows Forms нельзя поворачивать или наклонять. Например, при повороте пользовательского интерфейса на 90 градусов вложенные элементы управления Windows Forms сохранят свое вертикальное положение.
В большинстве случаев элементы управления Windows Forms не поддерживают пропорциональное масштабирование. Не смотря на то, что общий размер элемента управления масштабируется, дочерние элементы управления и компоненты элемента управления могут изменять размеры не так, как ожидалось. Это ограничение зависит от поддержки масштабирования каждым элементом управления Windows Forms.
В пользовательском интерфейсе WPF можно изменить z-порядок элементов для контроля поведения перекрывания. Вложенный элемент управления Windows Forms рисуется в отдельном HWND, причем он всегда рисуется поверх элементов WPF.
Элементы управления Windows Forms поддерживают автоматическое масштабирование в соответствии с размером шрифта. В пользовательском интерфейсе WPF изменение размера шрифта не влечет за собой изменение размера всего макета, хотя отдельные элементы могут динамически изменять размер.
Свойства окружения
Некоторые свойства окружения элементов управления WPF имеют эквиваленты Windows Forms. Эти свойства окружения распространяются на вложенные элементы управления Windows Forms и предоставляются как общие свойства элемента управления WindowsFormsHost. Элемент управления WindowsFormsHost переводит каждое свойство окружения WPF в его эквивалентWindows Forms.
Дополнительные сведения см. в разделе Сопоставление свойств Windows Forms и WPF.
Поведение
В следующей таблице описаны возможности взаимодействия.
Поведение |
Поддерживается |
Не поддерживается |
---|---|---|
Прозрачность |
Отрисовка элемента управления Windows Forms поддерживает прозрачность. Фон родительского элемента управления WPF может стать фоном вложенного элемента управления Windows Forms. |
Некоторые элементы управления Windows Forms не поддерживает прозрачность. Например, элементы управления TextBox и ComboBox не будут прозрачными при вложении в WPF. |
Переход по клавише табуляции |
Последовательность перехода для вложенных элементов управления Windows Forms та же, что и при вложении этих элементов управления в приложение, основанное на Windows Forms. Переход от элемента управления WPF к элементу управления Windows Forms по клавишам TAB и SHIFT + TAB работает как обычно. Элементы управления Windows Forms, имеющих значение false свойства TabStop, не получают фокус, когда пользователь переключается между элементами управления.
|
Неприменимо. |
Переход по клавишам со стрелками |
|
Неприменимо. |
Клавиши быстрого доступа |
Клавиши быстрого доступа работают как обычно, за исключением пунктов, оговоренных в столбце «Не поддерживается». |
Повторяющиеся в различных технологиях клавиши быстрого доступа не работают как обычные повторяющиеся клавиши быстрого доступа. При повторении клавиш быстрого доступа в различных технологиях по крайней мере одним элементом управления Windows Forms и одним элементом управления WPF, клавиша быстрого доступа всегда присваивается элементу управления Windows Forms. Фокус не переключается между элементами управления с одинаковыми клавишами быстрого доступа. |
Сочетание клавиш |
Горячие клавиши работают как обычно, за исключением пунктов, оговоренных в столбце «Не поддерживается». |
|
AcceptsReturn AcceptsTab и другие специфические свойства элементов управления |
Свойства, изменяющие стандартное поведение клавиатуры обычным образом, причем предполагается, что элемент управления Windows Forms переопределяет метод IsInputKey так, чтобы он возвращал true. |
Элементы управления Windows Forms, изменяющие стандартное поведение клавиатуры при обработке событий KeyDown, обрабатываются во вложенном элементе управления WPF последними. Поскольку эти элементы управления обрабатываются последними, они могут привести к непредвиденному поведению. |
События Enter и Leave |
Если фокус не устанавливается на элемент управления, содержащий ElementHost, при смене фокуса в одном элементе управления WindowsFormsHost обычно вызываются события Enter и Leave. |
События Enter и Leave не вызываются при следующем изменении фокуса:
|
Многопоточность |
Поддерживаются все возможности многопоточности. |
И технология Windows Forms, и технология WPF предполагают однопоточную модель одновременного выполнения. Во время отладки вызовы объектов структуры из других потоков будут вызывать исключение для принудительного выполнения этого требования. |
Безопасность |
Все сценарии взаимодействия требуют полного доверия. |
Не допускаются сценарии взаимодействия с частичным доверием. |
Специальные возможности |
Поддерживаются все сценарии специальных возможностей. Продукты вспомогательной технологии работают корректно, когда они используются для гибридных приложений, содержащих как элементы управления Windows Forms, так и элементы управления WPF. |
Неприменимо. |
Буфер обмена |
Все операции буфера обмена работают обычным образом. Сюда входят вырезания и вставки между элементами управления Windows Forms и WPF. |
Неприменимо. |
Функция перетаскивания |
Все операции перетаскивания работают обычным образом. Сюда входят операции между элементами управления Windows Forms и WPF. |
Неприменимо. |
Вложение элементов управления Windows Forms в приложения, основанные на Windows Presentation Foundation
Если в элемент управления Windows Forms вложен элемент управления WPF, поддерживаются следующие сценарии взаимодействия:
Вложение одного или нескольких элементов управления WPF с помощью кода.
Связывание вкладки свойств с одним или несколькими вложенными элементами управления WPF.
Вложение одной или нескольких страниц WPF в форму.
Запуск окна WPF.
Вложение формы с отношением «главный-подчиненный» с главным Windows Forms и подчиненными WPF.
Вложение формы с отношением «главный-подчиненный» с главным WPF и подчиненными Windows Forms.
Вложение пользовательских элементов управления WPF.
Вложение гибридных элементов управления.
Свойства окружения
Некоторые свойства окружения элементов управления Windows Forms имеют эквиваленты WPF. Эти свойства окружения распространяются на вложенные элементы управления WPF и предоставляются как общие свойства элемента управления ElementHost. Элемент управления ElementHost переводит каждое свойство окружения Windows Forms в его эквивалентWPF.
Дополнительные сведения см. в разделе Сопоставление свойств Windows Forms и WPF.
Поведение
В следующей таблице описаны возможности взаимодействия.
Поведение |
Поддерживается |
Не поддерживается |
---|---|---|
Прозрачность |
Отрисовка элемента управления WPF поддерживает прозрачность. Фон родительского элемента управления Windows Forms может стать фоном вложенного элемента управления WPF. |
Неприменимо. |
Многопоточность |
Поддерживаются все возможности многопоточности. |
И технология Windows Forms, и технология WPF предполагают однопоточную модель одновременного выполнения. Во время отладки вызовы объектов структуры из других потоков будут вызывать исключение для принудительного выполнения этого требования. |
Безопасность |
Все сценарии взаимодействия требуют полного доверия. |
Не допускаются сценарии взаимодействия с частичным доверием. |
Специальные возможности |
Поддерживаются все сценарии специальных возможностей. Продукты вспомогательной технологии работают корректно, когда они используются для гибридных приложений, содержащих как элементы управления Windows Forms, так и элементы управления WPF. |
Неприменимо. |
Буфер обмена |
Все операции буфера обмена работают обычным образом. Сюда входят вырезания и вставки между элементами управления Windows Forms и WPF. |
Неприменимо. |
Функция перетаскивания |
Все операции перетаскивания работают обычным образом. Сюда входят операции между элементами управления Windows Forms и WPF. |
Неприменимо. |
См. также
Основные понятия
Обзор: размещение элементов управления Windows Presentation Foundation в приложении Windows Forms
Сопоставление свойств Windows Forms и WPF