Partilhar via


Mapeamento de propriedades do Windows Forms e WPF

As tecnologias Windows Forms e WPF têm dois modelos de propriedade semelhantes, mas diferentes. Mapeamento de Propriedades suporta a interoperabilidade entre as duas arquiteturas e fornece os seguintes recursos:

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

  • Fornece manipulação padrão para mapear as propriedades mais comumente usadas.

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

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

Observação

Os eventos de alteração de propriedade não são propagados para cima do controle de hospedagem ou da hierarquia de elementos. A conversão de propriedade não será executada se o valor local de uma propriedade não for alterado devido à configuração direta, estilos, herança, vinculação de dados ou outros mecanismos que alteram 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 propriedade com o elemento WindowsFormsHost

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

Hospedagem do Windows Presentation Foundation Formulários do Windows 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 é realizado 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, porque o controle hospedado pode herdar o valor da propriedade BackColor. Nota: O controlo alojado não suporta 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 a partir da propriedade Background. O controle WindowsFormsHost atribui esse bitmap à propriedade BackgroundImage do controle hospedado. Isto proporciona um efeito semelhante ao da transparência. Observação: Você pode substituir esse comportamento ou remover o mapeamento de propriedade Background.
Cursor Cursor Se o mapeamento padrão não tiver sido reatribuído, o controlo WindowsFormsHost percorrerá a hierarquia dos seus ancestrais até encontrar um ancestral com a sua propriedade Cursor definida. Esse valor é convertido para o cursor correspondente mais próximo do Windows Forms.

Se o mapeamento padrão para a propriedade ForceCursor não tiver sido reatribuído, a travessia para 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 Fontcorrespondente. 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 controlador hospedado O conjunto de propriedades do WPF é traduzido em um Fontcorrespondente. 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á desativado.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

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

O tamanho da fonte no WPF é expresso como um noventa e seis avos de uma polegada, e no Windows Forms como um setenta e dois avos 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 mapeamento de propriedade Foreground é executado usando as seguintes regras:

- Se Foreground é um SolidColorBrush, use Color para ForeColor.
- Se Foreground for um GradientBrush, use a cor do GradientStop com 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 Windows Forms hospedado são definidos para o mesmo valor Thickness.

- Valores maiores que MaxValue são definidos como MaxValue.
- Valores inferiores a MinValue são definidos como MinValue.
Visibility Visible - Visible corresponde a Visible = true. O controle Windows Forms hospedado é visível. Não é recomendável definir explicitamente a propriedade Visible no controle hospedado como false.
- Collapsed mapeia para Visible = true ou false. O controlo Windows Forms hospedado não é desenhado e a sua área é colapsada.
- Hidden : O controle Windows Forms hospedado 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 em 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 das propriedades pai

As alterações na maioria das propriedades pai causam notificações para o controle filho hospedado. A lista a seguir descreve 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 propriedade com o controle ElementHost

As seguintes propriedades fornecem uma notificação de alteração incorporada. Não chame o método OnPropertyChanged quando estiver mapeando estas propriedades:

  • Tamanho Automático

  • Cor de fundo

  • Imagem de fundo

  • BackgroundImageLayout

  • BindingContext

  • CausasValidação

  • Menu de contexto

  • ContextMenuStrip

  • Cursor

  • Doca

  • Ativado

  • Fonte

  • ForeColor

  • Localização

  • Margem

  • Preenchimento

  • Progenitor

  • Região

  • DireitaToEsquerda

  • Tamanho

  • TabIndex

  • TabStop

  • Texto

  • Visível

O controle ElementHost converte as propriedades padrão do Windows Forms para seus equivalentes WPF usando a tabela de conversã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, BackgroundImageBackgroundImageLayout e quaisquer manipuladores de pintura 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, BackgroundImageBackgroundImageLayout e 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 é convertido para o cursor padrão WPF correspondente. Caso o Windows Forms não seja um cursor padrão, será atribuído o valor padrão.
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 WPF.
Bold FontWeight no elemento hospedado Se Bold estiver true, FontWeight será definido como Bold.

Se Bold estiver false, FontWeight será definido como Normal.
Italic FontStyle no elemento hospedado Se Italic estiver true, FontStyle será configurado como Italic.

Se Italic estiver false, FontStyle será definido como Normal.
Strikeout TextDecorations no elemento anfitrião 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 corresponde a Visible.
- Visible = false mapas para Hidden.

Ver também