Сопоставление свойств Windows Forms и WPF

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

  • упрощение сопоставления соответствующих изменений свойств в окружении ведущего приложения с размещенным элементом или элементом управления;

  • обработка по умолчанию для сопоставления чаще всего используемых свойств;

  • простое удаление, переопределение или расширение свойств по умолчанию.

  • автоматическое обнаружение изменений значений свойств для ведущего приложения и их преобразование для размещенного элемента или элемента управления.

Примечание.

События изменения свойств не распространяются на иерархию ведущего элемента или элемента управления. Преобразование свойств не выполняется, если локальное значение свойства не меняется, так как используются прямое задание, стили, наследование, привязка данных или другие механизмы, изменяющие значение свойства.

Для доступа к сопоставлению свойств используйте свойство PropertyMapэлемента WindowsFormsHost и свойство PropertyMap элемента управления ElementHost.

Сопоставление свойств с помощью элемента WindowsFormsHost

Элемент WindowsFormsHost преобразует свойства WPF по умолчанию в их эквиваленты Windows Forms, используя следующую таблицу преобразования.

Размещение в Windows Presentation Foundation Windows Forms Поведение при взаимодействии
Background

(System.Windows.Media.Brush)
BackColor

(System.Drawing.Color)
Элемент WindowsFormsHost задает BackColor свойство размещенного элемента управления и свойство BackgroundImage размещенного элемента управления. Сопоставление выполняется с помощью следующих правил:

- Если Background — это сплошной цвет, он преобразуется и используется для задания свойства BackColor размещенного элемента управления. Свойство BackColor не задается для размещенного элемента управления, так как размещенный элемент управления может наследовать значение свойства BackColor. Примечание. Размещенный элемент управления не поддерживает прозрачность. Любой цвет, назначенный BackColor, должен быть полностью непрозрачным со значением альфа, равным 0xFF.

- Если Background не является сплошным цветом, элемент управления WindowsFormsHost создает растровое изображение из свойства Background. Элемент управления WindowsFormsHost назначает это растровое изображение свойству BackgroundImage размещенного элемента управления. Это обеспечивает эффект, аналогичный прозрачности. Примечание. Это поведение можно переопределить или можно удалить сопоставление для свойства Background.
Cursor Cursor Если сопоставление по умолчанию не было переназначено, элемент управления WindowsFormsHost проходит по иерархии предков, пока не найдет предка с установленным свойством Cursor. Это значение преобразуется в ближайший соответствующий курсор Windows Forms.

Если сопоставление по умолчанию для свойства ForceCursor не было переназначено, обход останавливается на первом предке, у которого для ForceCursor установлено значение true.
FlowDirection

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRight сопоставляется No.

RightToLeft сопоставляется Yes.

Inherit не сопоставлен.

FlowDirection.RightToLeft сопоставляется RightToLeft.Yes.
FontStyle Style для System.Drawing.Font размещенного элемента управления Набор свойств WPF преобразуется в соответствующий шрифт Font. При изменении одного из этих свойств создается новый шрифт Font. Для Normal: Italic отключено. Для Italic или Oblique: Italic включено.
FontWeight Style для System.Drawing.Font размещенного элемента управления Набор свойств WPF преобразуется в соответствующий шрифт Font. При изменении одного из этих свойств создается новый шрифт Font. For Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBold или UltraBold: Bold включено. For ExtraLight, Light, Normal, Regular, Thin или UltraLight: Bold отключено.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
Набор свойств WPF преобразуется в соответствующий шрифт Font. При изменении одного из этих свойств создается новый шрифт Font. Размер размещенного элемента управления Windows Forms меняется в зависимости от размера шрифта.

Размер шрифта в WPF выражается как один девяносто шестая часть дюйма, а в Windows Forms как семьдесят вторая часть дюйма. Соответствующее преобразование выглядит следующим образом:

Размер шрифта Windows Forms = размер шрифта WPF * 72,0 / 96,0.
Foreground

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
Сопоставление свойства Foreground выполняется с помощью следующих правил:

- Если Foreground равно SolidColorBrush, используйте Color для ForeColor.
- Если Foreground равно GradientBrush, используйте для ForeColor цвет GradientStop с наименьшим значением смещения.
- Для любого другого типа Brush оставьте ForeColor без изменений. Это означает, что используется значение по умолчанию.
IsEnabled Enabled Если IsEnabled задано, элемент WindowsFormsHost задает свойство Enabled размещенного элемента управления.
Padding Padding Все четыре значения свойства Padding в размещенном элементе управления Windows Forms имеют одинаковое значение Thickness.

- Значения, большие MaxValue, устанавливаются равными MaxValue.
- Значения, меньшие MinValue, устанавливаются равными MinValue.
Visibility Visible - Visible сопоставляется Visible = true. Размещенный элемент управления Windows Forms является видимым. Не рекомендуется явно задавать для свойства Visible размещенного элемента управления значение false.
- Collapsed сопоставляется Visible = true или false. Размещенный элемент управления Windows Forms не отображается, и его область сворачивается.
- Hidden : размещенный элемент управления Windows Forms занимает место в макете, но не отображается. В этом случае свойству Visible присваивается значение true. Не рекомендуется явно задавать для свойства Visible размещенного элемента управления значение false.

Присоединенные свойства для элементов контейнера полностью поддерживаются элементом WindowsFormsHost.

Дополнительные сведения см. в разделе Пошаговое руководство. Сопоставление свойств с помощью элемента WindowsFormsHost.

Обновления свойств родителя

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

Например, при изменении значения свойства Background элемента WindowsFormsHost свойство BackColor размещенного элемента управления не меняется.

Сопоставление свойств с помощью элемента управления ElementHost

Следующие свойства предоставляют встроенное уведомление об изменениях. Не вызывайте метод OnPropertyChanged при сопоставлении этих свойств:

  • AutoSize

  • BackColor

  • BackgroundImage

  • BackgroundImageLayout

  • BindingContext

  • CausesValidation

  • ContextMenu

  • ContextMenuStrip

  • Курсор

  • Закрепить

  • Включен

  • Шрифт

  • ForeColor

  • Местонахождение

  • поле

  • Заполнение

  • Parent

  • Регион

  • RightToLeft

  • Size

  • TabIndex

  • TabStop

  • Текст

  • Видимо

Элемент управления ElementHost преобразует свойства Windows Forms по умолчанию в их эквиваленты WPF, используя следующую таблицу преобразования.

Дополнительные сведения см. в разделе Пошаговое руководство. Сопоставление свойств с помощью элемента управления ElementHost.

Размещение Windows Forms Windows Presentation Foundation Поведение при взаимодействии
BackColor

(System.Drawing.Color)
Background

(System.Windows.Media.Brush) размещенного элемента
Задание этого свойства принудительно инициирует перенакраску, используя ImageBrush. Если свойство BackColorTransparent имеет значение false (значение по умолчанию), эта кисть ImageBrush основана на внешнем виде элемента управления ElementHost, включая его свойства BackColor, BackgroundImage, BackgroundImageLayout и все присоединенные обработчики окраски.

Если свойство BackColorTransparent имеет значение true (значение по умолчанию), кисть ImageBrush основана на внешнем виде родителя элемента управления ElementHost, включая свойства BackColor, BackgroundImage, BackgroundImageLayout родителя и все присоединенные обработчики окраски.
BackgroundImage

(System.Drawing.Image)
Background

(System.Windows.Media.Brush) размещенного элемента
Установка этого свойства приводит к тому же поведению, которое описано для сопоставления BackColor.
BackgroundImageLayout Background

(System.Windows.Media.Brush) размещенного элемента
Установка этого свойства приводит к тому же поведению, которое описано для сопоставления BackColor.
Cursor

(System.Windows.Forms.Cursor)
Cursor

(System.Windows.Input.Cursor)
Стандартный курсор Windows Forms преобразуется в соответствующий стандартный курсор WPF. Если курсор Windows Forms не является стандартным курсором, используется значение по умолчанию.
Enabled IsEnabled Если Enabled установлено, элемент управления ElementHost устанавливает свойство IsEnabled размещенного элемента управления.
Font

(System.Drawing.Font)
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Значение Font преобразуется в соответствующий набор свойств шрифта WPF.
Bold FontWeight размещенного элемента Если значение Bold равно true, то FontWeight присваивается значение Bold.

Если значение Bold равно false, то FontWeight присваивается значение Normal.
Italic FontStyle размещенного элемента Если значение Italic равно true, то FontStyle присваивается значение Italic.

Если значение Italic равно false, то FontStyle присваивается значение Normal.
Strikeout TextDecorations размещенного элемента Применяется только при размещении элемента управления TextBlock.
Underline TextDecorations размещенного элемента Применяется только при размещении элемента управления TextBlock.
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
No сопоставляется LeftToRight.

Yes сопоставляется RightToLeft.
Visible Visibility Элемент управления ElementHost устанавливает Visibility свойство размещенного элемента с помощью следующих правил:

- Visible = true сопоставляется Visible.
- Visible = false сопоставляется Hidden.

См. также