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