Поделиться через


Сопоставление свойств 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. Для свойств Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBold или UltraBold функция Bold доступна. Для свойств 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, используйте цвет GradientStop с наименьшим значением смещения для ForeColor.

  • Для любого другого типа Brush необходимо оставить ForeColor без изменений. Это означает использование значения по умолчанию.

IsEnabled

Enabled

Если задано свойство IsEnabled, элемент WindowsFormsHost задает свойство Enabled размещаемого элемента управления.

Padding

Padding

Все четыре значения свойства Padding размещаемого элемента управления Windows Forms задаются тем же значением Thickness.

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

  • Курсор

  • Dock

  • Enabled

  • Шрифт

  • ForeColor

  • Расположение

  • Margin

  • Заполнение

  • Родительский

  • Region

  • RightToLeft

  • Размер

  • TabIndex

  • TabStop

  • Text

  • Visible

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

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

Размещение Windows Forms

Windows Presentation Foundation (WPF)

Взаимодействие

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 размещаемого элемента по следующим правилам:

См. также

Задачи

Пошаговое руководство: сопоставление свойств с помощью элемента WindowsFormsHost

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

Ссылки

ElementHost

WindowsFormsHost

Основные понятия

Взаимодействие WPF и Win32

Взаимодействие WPF и Windows Forms