Windows Forms e mapeamento de propriedade do WPF

As tecnologias Windows Forms e WPF têm dois modelos de propriedade semelhantes, mas diferentes. O mapeamento de propriedade dá suporte à interoperação entre as duas arquiteturas e fornece os seguintes recursos:

  • Facilita o mapeamento de alterações de propriedades relevantes no ambiente de host para o elemento ou o controle hospedado.

  • Fornece tratamento padrão para mapeamento das propriedades mais comumente usadas.

  • Permite remoção, substituição ou extensão fácil das propriedades padrão.

  • Garante que as alterações de valor da propriedade no host sejam automaticamente detectadas e convertidas no elemento ou controle hospedado.

Observação

Os eventos de alteração de propriedade não são propagados até o controle de hospedagem ou hierarquia de elementos. A conversão de propriedade não é executada se o valor de uma propriedade local não for alterado devido à configuração direta, estilos, herança, vinculação de dados ou outros mecanismos que alterem o valor da propriedade.

Use a PropertyMap propriedade no elemento e a PropertyMap propriedade no ElementHost controle para acessar o WindowsFormsHost mapeamento de propriedades.

Mapeamento de propriedades do elemento WindowsFormsHost

O WindowsFormsHost elemento converte as propriedades padrão do WPF para seus equivalentes do Windows Forms usando a tabela de tradução a seguir.

Hospedagem do Windows Presentation Foundation Windows Forms Comportamento de interoperação
Background

(System.Windows.Media.Brush)
BackColor

(System.Drawing.Color)
O WindowsFormsHost elemento define a propriedade do controle hospedado e a BackColorBackgroundImage propriedade do controle hospedado. O mapeamento é executado usando as seguintes regras:

- Se Background for uma cor sólida, ela é convertida e usada para definir a BackColor propriedade do controle hospedado. A BackColor propriedade não é definida no controle hospedado, porque o controle hospedado pode herdar o valor da BackColor propriedade. Observação: o controle hospedado não dá suporte à transparência. Qualquer cor atribuída a BackColor deve ser totalmente opaca, com um valor alfa de 0xFF.

- Se Background não for uma cor sólida, o WindowsFormsHost controle criará um bitmap a Background partir da propriedade. O WindowsFormsHost controle atribui esse bitmap à BackgroundImage propriedade do controle hospedado. Isso proporciona um efeito que é semelhante à transparência. Nota: Você pode substituir esse comportamento ou pode remover o mapeamento de Background propriedades.
Cursor Cursor Se o mapeamento padrão não tiver sido reatribuído, WindowsFormsHost o controle percorrerá sua hierarquia ancestral até encontrar um ancestral com seu Cursor conjunto de propriedades. Esse valor é convertido para o cursor correspondente do Windows Forms mais próximo.

Se o mapeamento padrão para a propriedade não tiver sido reatribuído, a ForceCursor travessia será interrompida no primeiro ancestral com ForceCursor definido como true.
FlowDirection

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
O LeftToRight é mapeado para No.

O RightToLeft é mapeado para Yes.

Inherit não está mapeado.

O FlowDirection.RightToLeft é mapeado para RightToLeft.Yes.
FontStyle Style nos controles hospedados System.Drawing.Font O conjunto de propriedades WPF é convertido em um Fontarquivo . Quando uma dessas propriedades é alterada, uma nova Font é criada. Para Normal: Italic está desabilitado. Para Italic ou Oblique: Italic está habilitado.
FontWeight Style nos controles hospedados System.Drawing.Font O conjunto de propriedades WPF é convertido em um Fontarquivo . Quando uma dessas propriedades é alterada, uma nova Font é criada. Para Black, , , , Heavy, , BoldDemiBoldMediumExtraBoldou SemiBoldUltraBold: Bold está habilitado. Para ExtraLight, , , NormalLight, , RegularThinou UltraLight: Bold está desabilitado.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
O conjunto de propriedades WPF é convertido em um Fontarquivo . Quando uma dessas propriedades é alterada, uma nova Font é criada. O controle Windows Forms hospedado é redimensionado com base no tamanho da fonte.

O tamanho da fonte no WPF é expresso como um noventa e sexto de uma polegada e no Windows Forms como um setenta segundos de uma polegada. A conversão correspondente é:

Tamanho da fonte do Windows Forms = tamanho da fonte WPF * 72.0 / 96.0.
Foreground

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
O Foreground mapeamento de propriedades é executado usando as seguintes regras:

- Se Foreground for um SolidColorBrush, use Color para ForeColor.
- Se Foreground for um GradientBrush, use a GradientStop cor do com o menor valor de deslocamento para ForeColor.
- Para qualquer outro Brush tipo, deixe ForeColor inalterado. Isso significa que o padrão é usado.
IsEnabled Enabled Quando IsEnabled é definido, WindowsFormsHost elemento define a Enabled propriedade no controle hospedado.
Padding Padding Todos os quatro valores da Padding propriedade no controle Windows Forms hospedado são definidos com o mesmo Thickness valor.

- Valores maiores que MaxValue os definidos como MaxValue.
- Valores menores que MinValue são definidos como MinValue.
Visibility Visible O - Visible é mapeado para Visible = true. O controle Windows Forms hospedado é visível. Não é recomendável definir explicitamente a Visible propriedade no controle false hospedado.
- Collapsedmapeia para Visible = true ou .false O controle Windows Forms hospedado não é desenhado e sua área é recolhida.
- Hidden : O controle Windows Forms hospedado ocupa espaço no layout, mas não está visível. Nesse caso, a Visible propriedade é definida como true. Não é recomendável definir explicitamente a Visible propriedade no controle false hospedado.

As propriedades anexadas em elementos de contêiner são totalmente suportadas WindowsFormsHost pelo elemento .

Para mais informações, consulte Instruções passo a passo: mapeando propriedades usando o elemento WindowsFormsHost.

Atualizações para propriedades pai

As alterações na maioria das propriedades pai ocasionam notificações para o controle filho hospedado. A lista a seguir descreve as propriedades que não ocasionam notificações quando seus valores são alterados.

Por exemplo, se você alterar o Background valor da propriedade do elemento , a BackColor propriedade do WindowsFormsHost controle hospedado não será alterada.

Mapeamento de propriedade com o controle ElementHost

As propriedades a seguir fornecem notificação de alteração interna. Não chame o OnPropertyChanged método quando estiver mapeando estas propriedades:

  • AutoSize

  • BackColor

  • BackgroundImage

  • BackgroundImageLayout

  • BindingContext

  • CausesValidation

  • ContextMenu

  • ContextMenuStrip

  • Cursor

  • Encaixar

  • Habilitado

  • Fonte

  • ForeColor

  • Location

  • Margem

  • Preenchimento

  • Pai

  • Region

  • RightToLeft

  • Tamanho

  • TabIndex

  • TabStop

  • Texto

  • Visível

O ElementHost controle converte as propriedades padrão do Windows Forms para seus equivalentes WPF usando a tabela de conversão a seguir.

Para mais informações, consulte Instruções passo a passo: mapeando propriedades usando o controle ElementHost.

Hospedagem dos Windows Forms Windows Presentation Foundation Comportamento de interoperação
BackColor

(System.Drawing.Color)
Background

(System.Windows.Media.Brush ) no elemento hospedado
A definição dessa propriedade força uma repintura com um ImageBrusharquivo . Se a BackColorTransparent propriedade for definida como false (o valor padrão), isso ImageBrush se baseará na aparência do controle, incluindo suas BackColorpropriedades , , BackgroundImageLayoutBackgroundImagee quaisquer manipuladores de ElementHost pintura anexados.

Se a BackColorTransparent propriedade for definida como true, o ImageBrush será baseado na aparência do pai do controle, incluindo as propriedades , , BackgroundImageBackgroundImageLayout e quaisquer manipuladores BackColorde tinta anexados do ElementHost pai.
BackgroundImage

(System.Drawing.Image)
Background

(System.Windows.Media.Brush ) no elemento hospedado
A definição dessa propriedade causa o mesmo comportamento descrito para o BackColor mapeamento.
BackgroundImageLayout Background

(System.Windows.Media.Brush ) no elemento hospedado
A definição dessa propriedade causa o mesmo comportamento descrito para o BackColor mapeamento.
Cursor

(System.Windows.Forms.Cursor)
Cursor

(System.Windows.Input.Cursor)
O cursor padrão do Windows Forms é convertido para o cursor padrão WPF correspondente. Se o Windows Forms não for um cursor padrão, o padrão será atribuído.
Enabled IsEnabled Quando Enabled é definido, o ElementHost controle define a IsEnabled propriedade no elemento hospedado.
Font

(System.Drawing.Font)
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
O Font valor é convertido em um conjunto correspondente de propriedades de fonte WPF.
Bold FontWeight no elemento hospedado Se Bold é true, FontWeight é definido como Bold.

Se Bold é false, FontWeight é definido como Normal.
Italic FontStyle no elemento hospedado Se Italic é true, FontStyle é definido como Italic.

Se Italic é false, FontStyle é definido como Normal.
Strikeout TextDecorations no elemento hospedado Aplica-se somente ao hospedar um TextBlock controle.
Underline TextDecorations no elemento hospedado Aplica-se somente ao hospedar um TextBlock controle.
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
O No é mapeado para LeftToRight.

O Yes é mapeado para RightToLeft.
Visible Visibility O ElementHost controle define a Visibility propriedade no elemento hospedado usando as seguintes regras:

O - Visible = true é mapeado para Visible.
O - Visible = false é mapeado para Hidden.

Confira também