Compartilhar via


Mapeamento de propriedades do Windows Forms e do WPF

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

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

  • Fornece tratamento padrão para mapear as propriedades mais usadas.

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

  • Garante que as alterações de valor da propriedade no host sejam detectadas e traduzidas automaticamente para o controle ou elemento 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 propriedades não será executada se o valor local de uma propriedade não for alterado devido à configuração direta, estilos, herança, associação de dados ou outros mecanismos que alterem o valor da propriedade.

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

Mapeamento de propriedades com o elemento WindowsFormsHost

O elemento WindowsFormsHost 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 elemento WindowsFormsHost define a propriedade BackColor do controle hospedado e a propriedade BackgroundImage do controle hospedado. O mapeamento é executado usando as seguintes regras:

- Se Background for uma cor sólida, ela será convertida e usada para definir a propriedade BackColor do controle hospedado. A propriedade BackColor não está definida no controle hospedado, pois o controle hospedado pode herdar o valor da propriedade BackColor. 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 controle WindowsFormsHost criará um bitmap da propriedade Background. O controle WindowsFormsHost atribui esse bitmap à propriedade BackgroundImage do controle hospedado. Isso fornece um efeito semelhante à transparência. Observação: Você pode substituir esse comportamento ou remover o mapeamento de propriedades Background.
Cursor Cursor Se o mapeamento padrão não tiver sido reatribuído, o controle WindowsFormsHost percorrerá sua hierarquia ancestral até encontrar um ancestral com sua propriedade Cursor definida. Esse valor é traduzido para o cursor do Windows Forms correspondente mais próximo.

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

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRight mapeia para No.

RightToLeft mapeia para Yes.

Inherit não está mapeado.

FlowDirection.RightToLeft mapeia para RightToLeft.Yes.
FontStyle Style no System.Drawing.Font do controle hospedado O conjunto de propriedades do WPF é traduzido em um Font correspondente. Quando uma dessas propriedades é alterada, um novo Font é criado. Para Normal: Italic está desativado. Para Italic ou Oblique: Italic está habilitado.
FontWeight Style no System.Drawing.Font do controle hospedado O conjunto de propriedades do WPF é traduzido em um Font correspondente. Quando uma dessas propriedades é alterada, um novo Font é criado. Para Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBoldou UltraBold: Bold está habilitado. Para ExtraLight, Light, Normal, Regular, Thinou UltraLight: Bold está desabilitado.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
O conjunto de propriedades do WPF é traduzido em um Font correspondente. Quando uma dessas propriedades é alterada, um novo Font é criado. O controle hospedado do Windows Forms redimensiona com base no tamanho da fonte.

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

Tamanho da fonte do Windows Forms = tamanho da fonte do WPF * 72,0 / 96,0.
Foreground

(System.Windows.Media.Brush)
ForeColor

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

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

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

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

Para obter mais informações, consulte 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 causam notificações quando seus valores são alterados.

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

Mapeamento de propriedades com o controle ElementHost

As propriedades a seguir fornecem uma notificação de alteração embutida. Não chame o método OnPropertyChanged ao mapear essas propriedades:

  • Dimensionamento automático

  • Cor de Fundo

  • BackgroundImage

  • BackgroundImageLayout

  • BindingContext

  • Causas de Validação

  • Menu de Contexto

  • Menu de Contexto (ContextMenuStrip)

  • Cursor

  • Doca

  • Ativado

  • Fonte

  • ForeColor

  • Localização

  • Margem

  • Enchimento

  • Parente

  • Região

  • DaDireitaParaEsquerda

  • Tamanho

  • TabIndex

  • Tabstop

  • Texto

  • Visível

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

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

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

(System.Drawing.Color)
Background

(System.Windows.Media.Brush) no elemento hospedado
Definir essa propriedade força uma repintura com um ImageBrush. Se a propriedade BackColorTransparent estiver definida como false (o valor padrão), essa ImageBrush será baseada na aparência do controle ElementHost, incluindo suas propriedades BackColor, BackgroundImage, BackgroundImageLayout e quaisquer manipuladores de tinta anexados.

Se a propriedade BackColorTransparent estiver definida como true, o ImageBrush será baseado na aparência do pai do controle ElementHost, incluindo as propriedades BackColor, BackgroundImage e BackgroundImageLayout do pai, assim como quaisquer manipuladores de tinta anexados.
BackgroundImage

(System.Drawing.Image)
Background

(System.Windows.Media.Brush) no elemento hospedado
Definir essa propriedade causa o mesmo comportamento descrito para o mapeamento de BackColor.
BackgroundImageLayout Background

(System.Windows.Media.Brush) no elemento hospedado
Definir essa propriedade causa o mesmo comportamento descrito para o mapeamento de BackColor.
Cursor

(System.Windows.Forms.Cursor)
Cursor

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

(System.Drawing.Font)
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
O valor Font é convertido em um conjunto correspondente de propriedades de fonte do 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 controle TextBlock.
Underline TextDecorations no elemento hospedado Aplica-se somente ao hospedar um controle TextBlock.
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
No mapeia para LeftToRight.

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

- Visible = true mapeia para Visible.
- Visible = false mapeia para Hidden.

Consulte também