Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
WPF и Windows Forms представляют две разные архитектуры для создания интерфейсов приложений. Пространство System.Windows.Forms.Integration имен предоставляет классы, обеспечивающие распространенные сценарии взаимодействия. Два ключевых класса, реализующих возможности взаимодействия, являются WindowsFormsHost и ElementHost. В этом разделе описывается, какие сценарии взаимодействия поддерживаются и какие сценарии не поддерживаются.
Замечание
Особое внимание уделяется сценарию гибридного управления . Гибридный элемент управления имеет контроль из одной технологии, вложенной в элемент управления из другой технологии. Это также называется внутренним взаимодействием. Многоуровневое гибридное управление имеет более одного уровня вложенности гибридного управления. Пример многоуровневого вложенного взаимодействия — это элемент управления Windows Forms, который содержит элемент управления WPF, в который встроен другой элемент управления Windows Forms. Многоуровневые гибридные элементы управления не поддерживаются.
Размещение элементов управления Windows Forms в WPF
Следующие сценарии взаимодействия поддерживаются при размещении элемента управления Windows Forms в элементе управления WPF:
Элемент управления WPF может размещать один или несколько элементов управления Windows Forms с помощью XAML.
Он может размещать один или несколько элементов управления Windows Forms с помощью кода.
Он может размещать элементы управления контейнерами Windows Forms, содержащие другие элементы управления Windows Forms.
Он может размещать эталонную или подробную форму с подробными сведениями о мастере WPF и Windows Forms.
Он может размещать эталонную или подробную форму с основными сведениями о Windows Forms и WPF.
Он может содержать один или несколько контролей ActiveX.
Он может размещать один или несколько составных элементов управления.
Он может размещать гибридные элементы управления с помощью языка разметки расширяемых приложений (XAML).
Он может размещать гибридные элементы управления с помощью кода.
Поддержка макета
В следующем списке описываются известные ограничения, когда элемент WindowsFormsHost пытается интегрировать его размещенный элемент управления Windows Forms в систему макета WPF.
В некоторых случаях элементы управления Windows Forms не могут быть изменены или могут иметь только определенные размеры. Например, элемент управления windows Forms ComboBox поддерживает только одну высоту, которая определяется размером шрифта элемента управления. В динамическом макете WPF, где элементы могут растягиваться по вертикали, размещенный ComboBox элемент управления не будет растягиваться должным образом.
Элементы управления Windows Forms нельзя повернуть или изменить. Например, при повороте пользовательского интерфейса на 90 градусов размещенные элементы управления Windows Forms будут поддерживать их вертикальное положение.
В большинстве случаев элементы управления Windows Forms не поддерживают пропорциональное масштабирование. Хотя общие размеры элемента управления будут масштабироваться, дочерние элементы и компоненты элемента управления могут не менять размер как ожидалось. Это ограничение зависит от того, насколько хорошо каждый элемент управления Windows Forms поддерживает масштабирование.
В пользовательском интерфейсе WPF можно изменить порядок элементов для управления перекрывающимся поведением. Элемент управления 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 не поддерживают прозрачность. Например, элементы TextBoxComboBox управления не будут прозрачными при размещении WPF. |
| Табулируя | Порядок вкладок для размещенных элементов управления Windows Forms совпадает с тем, что эти элементы управления размещаются в приложении на основе Windows Forms. Вкладка из элемента управления WPF в элемент управления Windows Forms с помощью клавиши TAB и клавиш SHIFT+TAB работает обычно. Элементы управления Windows Forms, имеющие TabStop значение false свойства, не получают фокус при использовании пользовательских вкладок с помощью элементов управления.— Каждый WindowsFormsHost элемент управления имеет TabIndex значение, определяющее, когда этот WindowsFormsHost элемент управления получит фокус. — элементы управления Windows Forms, содержащиеся в контейнере WindowsFormsHost , соответствуют порядку, указанному свойством TabIndex . Переход с последнего индекса вкладки перемещает фокус на следующий элемент управления WPF, если такой существует. Если другой фокусируемый элемент управления WPF не существует, вкладка возвращается к первому элементу управления Windows Forms в порядке табуляции. - TabIndex значения для элементов управления внутри WindowsFormsHost относятся к другим элементам управления Windows Forms, которые содержатся в элементе управления WindowsFormsHost. — Табуляция учитывает поведение, зависяющее от элемента управления. Например, нажатие клавиши TAB в TextBox элементе управления со AcceptsTab значением true свойства вводит вкладку в текстовом поле вместо перемещения фокуса. |
Неприменимо. |
| Навигация с помощью клавиш со стрелками | — Навигация с клавишами со стрелками в WindowsFormsHost элементе управления совпадает с обычным элементом управления контейнера Windows Forms: клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВЛЕВО выбирают предыдущий элемент управления, а клавиши СТРЕЛКА ВНИЗ и СТРЕЛКА ВПРАВО выбирают следующий элемент управления. — Клавиши СТРЕЛКА ВВЕРХ и СТРЕЛКА ВЛЕВО из первого элемента управления, содержащегося в элементе WindowsFormsHost управления, выполняют то же действие, что и сочетание клавиш SHIFT+TAB. Если существует элемент управления WPF, на который можно установить фокус, фокус перемещается за пределы элемента управления WindowsFormsHost. Это поведение отличается от стандартного ContainerControl поведения тем, что оно не переходит к последнему элементу управления. Если другой фокусируемый элемент управления WPF не существует, фокус возвращается к последнему элементу управления Windows Forms в порядке табуляции. — Клавиши СТРЕЛКА ВНИЗ и СТРЕЛКА ВПРАВО последнего элемента управления в составе элемента управления WindowsFormsHost выполняют те же действия, что и клавиша TAB. Если существует элемент управления WPF, на который можно установить фокус, фокус перемещается за пределы элемента управления WindowsFormsHost. Это поведение отличается от стандартного ContainerControl поведения тем, что переход к первому элементу управления не осуществляется. Если другой фокусируемый элемент управления WPF не существует, фокус возвращается к первому элементу управления Windows Forms в порядке табуляции. |
Неприменимо. |
| Ускорители | Ускорители работают как обычно, за исключением случаев, когда указано в столбце "Не поддерживается". | Дублирующиеся акселераторы в разных технологиях не работают, как обычные повторяющиеся акселераторы. Если акселератор дублируется в разных технологиях, причём один в элементе управления Windows Forms и другой в элементе управления WPF, элемент управления Windows Forms всегда перехватывает управление акселератором. Фокус не переключается между элементами управления при нажатии дубликата акселератора. |
| Сочетания клавиш | Сочетания клавиш работают как обычно, за исключением случаев, указанных в столбце "Не поддерживается". | — Сочетания клавиш Windows Forms, которые обрабатываются на этапе предварительной обработки, всегда имеют приоритет над сочетаниями клавиш WPF. Например, если у вас есть ToolStrip элемент управления с определенными сочетаниями клавиш CTRL+S, а команда WPF привязана к CTRL+S, ToolStrip обработчик управления всегда вызывается первым независимо от фокуса. — сочетания клавиш Windows Forms, обрабатываемые событием KeyDown, в WPF обрабатываются в последнюю очередь. Это поведение можно предотвратить, переопределив метод элемента управления IsInputKey Windows Forms или обработав событие PreviewKeyDown. Возвращайте true из метода IsInputKey, или установите значение свойства PreviewKeyDownEventArgs.IsInputKey на true в вашем обработчике события PreviewKeyDown. |
| AcceptsReturn, AcceptsTab и другие особенности поведения элементов управления | Свойства, изменяющие поведение клавиатуры по умолчанию, работают как обычно, при условии, что элемент управления Windows Forms переопределяет IsInputKey метод, чтобы вернуть true. |
Элементы управления Windows Forms, которые изменяют поведение клавиатуры по умолчанию, обрабатывая KeyDown событие, обрабатываются последним в элементе управления WPF узла. Так как эти элементы управления обрабатываются в последний раз, они могут создавать непредвиденное поведение. |
| События входа и выхода | Если фокус не переходит к содержащему ElementHost элементу управления, события Ввод и Выход создаются обычно при изменении фокуса внутри одного WindowsFormsHost элемента управления. | События ввода и выхода не возникают при изменении следующего фокуса: — изнутри в внешний WindowsFormsHost элемент управления. — извне внутрь в элемент управления. — вне WindowsFormsHost элемента управления. — из элемента управления Windows Forms, размещенного в WindowsFormsHost элементе управления, в элемент управления ElementHost, размещенный внутри того же WindowsFormsHost. |
| Многопоточность | Поддерживаются все разновидности многопоточности. | Технологии Windows Forms и WPF предполагают однопоточную модель параллелизма. Во время отладки вызовы объектов платформы из других потоков вызывают исключение для применения этого требования. |
| Безопасность | Для всех сценариев взаимодействия требуется полное доверие. | В сценариях ограниченного доверия взаимодействие не допускается. |
| Доступность | Поддерживаются все сценарии специальных возможностей. Продукты вспомогательных технологий работают правильно, если они используются для гибридных приложений, содержащих элементы управления Windows Forms и WPF. | Неприменимо. |
| Буфер обмена | Все операции буфера обмена работают как обычно. Это включает в себя вырезание и вставку между элементами управления Windows Forms и WPF. | Неприменимо. |
| Функция перетаскивания | Все операции перетаскивания работают как обычно. К ним относятся операции между элементами управления Windows Forms и WPF. | Неприменимо. |
Размещение элементов управления WPF в Windows Forms
Следующие сценарии взаимодействия поддерживаются, когда элемент управления 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. | Неприменимо. |
См. также
- ElementHost
- WindowsFormsHost
- Пошаговое руководство: размещение элемента управления Windows Forms в WPF
- Пошаговое руководство: размещение составного управляющего элемента Windows Forms в WPF
- Пошаговое руководство: размещение составного элемента управления WPF в Windows Forms
- Сопоставление свойств в Windows Forms и WPF
.NET Desktop feedback