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
.NET Desktop feedback