Asignación de propiedades en formularios Windows Forms y WPF

Las tecnologías de Windows Forms y WPF tienen dos modelos de propiedad similares pero diferentes. La asignación de propiedades admite la interoperación entre las dos arquitecturas y proporciona las siguientes funcionalidades:

  • Facilita la asignación de cambios de propiedad relevantes en el entorno host al control o elemento hospedado.

  • Proporciona control predeterminado para asignar las propiedades más usadas.

  • Permite la eliminación, invalidación o extensión fáciles de las propiedades predeterminadas.

  • Garantiza que los cambios de valor de propiedad en el host se detectan y traducen automáticamente al control o elemento hospedado.

Nota:

Los eventos de cambio de propiedad no se propagan a la jerarquía de elementos o control de hospedaje. La traducción de propiedades no se realiza si el valor local de una propiedad no cambia debido a la configuración directa, los estilos, la herencia, el enlace de datos u otros mecanismos que cambian el valor de la propiedad.

Utilice la propiedad PropertyMap en el elemento WindowsFormsHost y la propiedad PropertyMap del control ElementHost para tener acceso a la asignación de propiedades.

Asignación de propiedades con el elemento WindowsFormsHost

El elemento WindowsFormsHost traduce las propiedades predeterminadas de WPF a sus equivalentes de Windows Forms mediante la siguiente tabla de traducción.

Hospedamiento de Windows Presentation Foundation Windows Forms Comportamiento de la interoperación
Background

(System.Windows.Media.Brush)
BackColor

(System.Drawing.Color)
El elemento WindowsFormsHost establece la propiedad BackColor del control hospedado y la propiedad BackgroundImage del control hospedado. La asignación se realiza mediante las reglas siguientes:

- Si Background es un color sólido, se convierte y se usa para establecer la propiedad BackColor del control hospedado. La propiedad BackColor no se establece en el control hospedado, porque el control hospedado puede heredar el valor de la propiedad BackColor. Nota: El control hospedado no admite transparencia. Cualquier color asignado a BackColor debe ser totalmente opaco, con un valor alfa de 0xFF.

- Si Background no es un color sólido, el control WindowsFormsHost crea un mapa de bits a partir de la propiedad Background. El control WindowsFormsHost asigna este mapa de bits a la propiedad BackgroundImage del control hospedado. Esto proporciona un efecto similar a la transparencia. Nota: Puede invalidar este comportamiento o quitar la asignación de propiedades Background.
Cursor Cursor Si no se ha reasignado la asignación predeterminada, el control WindowsFormsHost recorre su jerarquía antecesora hasta que encuentra un antecesor con su conjunto de propiedades Cursor. Este valor se traduce al cursor de Windows Forms correspondiente más cercano.

Si no se ha reasignado la asignación predeterminada de la propiedad ForceCursor, el recorrido se detiene en el primer antecesor con ForceCursor establecido en true.
FlowDirection

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRight se asigna a No.

RightToLeft se asigna a Yes.

Inherit no está asignado.

FlowDirection.RightToLeft se asigna a RightToLeft.Yes.
FontStyle Style en el System.Drawing.Font del control hospedado El conjunto de propiedades de WPF se traduce en un Font correspondiente. Cuando cambia una de estas propiedades, se crea un nuevo Font. Para Normal: Italic está deshabilitado. Para Italic o Oblique: Italic está habilitado.
FontWeight Style en el System.Drawing.Font del control hospedado El conjunto de propiedades de WPF se traduce en un Font correspondiente. Cuando cambia una de estas propiedades, se crea un nuevo Font. Para Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBold o UltraBold: Bold está habilitado. Para ExtraLight, Light, Normal, Regular, Thin o UltraLight: Bold está deshabilitado.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
El conjunto de propiedades de WPF se traduce en un Font correspondiente. Cuando cambia una de estas propiedades, se crea un nuevo Font. El control de Windows Forms hospedado cambia de tamaño en función del tamaño de fuente.

El tamaño de fuente en WPF se expresa como una noventa y seisava parte de una pulgada, y en Windows Forms como una setenta y dosava parte de una pulgada. La conversión correspondiente es:

Tamaño de fuente de Windows Forms = tamaño de fuente de WPF * 72,0 / 96,0.
Foreground

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
La asignación de propiedades Foreground se realiza mediante las reglas siguientes:

- Si Foreground es SolidColorBrush, use Color para ForeColor.
- Si Foreground es GradientBrush, use el color de GradientStop con el valor de desplazamiento más bajo para ForeColor.
- Para cualquier otro tipo Brush, deje ForeColor sin cambios. Esto significa que se usa el valor predeterminado.
IsEnabled Enabled Cuando se establece IsEnabled, el elemento WindowsFormsHost establece la propiedad Enabled en el control hospedado.
Padding Padding Los cuatro valores de la propiedad Padding del control de Windows Forms hospedado se establecen en el mismo valor Thickness.

- Los valores mayores que MaxValue se establecen en MaxValue.
- Los valores menores que MinValue se establecen en MinValue.
Visibility Visible - Visible se asigna a Visible = true. El control de Windows Forms hospedado está visible. No se recomienda establecer explícitamente la propiedad Visible en el control hospedado en false.
- Collapsed se asigna a Visible = true o false. El control de Windows Forms hospedado no se dibuja y su área está contraída.
- Hidden : El control de Windows Forms hospedado ocupa espacio en el diseño, pero no está visible. En tal caso, la propiedad Visible está establecida en true. No se recomienda establecer explícitamente la propiedad Visible en el control hospedado en false.

Las propiedades adjuntas en los elementos contenedoras son totalmente compatibles con el elemento WindowsFormsHost.

Para obtener más información, consulte Tutorial: Asignar propiedades mediante el uso del elemento WindowsFormsHost.

Actualizaciones de las propiedades primarias

Los cambios en la mayoría de las propiedades primarias provocan notificaciones en el control secundario hospedado. En la lista siguiente se describen las propiedades que no provocan notificaciones cuando cambian sus valores.

Por ejemplo, si cambia el valor de la propiedad Background del elemento WindowsFormsHost, la propiedad BackColor del control hospedado no cambia.

Asignación de propiedades con el control ElementHost

Las propiedades siguientes proporcionan una notificación de cambio integrada. No llame al método OnPropertyChanged cuando asigne estas propiedades:

  • AutoSize

  • BackColor

  • BackgroundImage

  • BackgroundImageLayout

  • BindingContext

  • CausesValidation

  • ContextMenu

  • ContextMenuStrip

  • Cursor

  • Acoplar

  • habilitado

  • Fuente

  • ForeColor

  • Location

  • Margen

  • Relleno

  • Parent

  • Region

  • RightToLeft

  • Size

  • TabIndex

  • TabStop

  • Texto

  • Visible

El control ElementHost traduce las propiedades de Windows Forms predeterminadas a sus equivalentes de WPF mediante la siguiente tabla de traducción.

Para obtener más información, consulte Tutorial: Asignar propiedades mediante el uso del control ElementHost.

Hospedamiento de Windows Forms Windows Presentation Foundation Comportamiento de la interoperación
BackColor

(System.Drawing.Color)
Background

(System.Windows.Media.Brush) en el elemento hospedado
Al establecer esta propiedad, se fuerza a volver a pintar con ImageBrush. Si la propiedad BackColorTransparent se establece en false (el valor predeterminado), ImageBrush se basa en la apariencia del control ElementHost, incluidas sus propiedades BackColor, BackgroundImage, BackgroundImageLayout y los controladores de pintura adjuntos.

Si la propiedad BackColorTransparent se establece en true, ImageBrush se basa en la apariencia del elemento primario del control ElementHost, incluidas las propiedades BackColor, BackgroundImage, BackgroundImageLayout y los controladores de pintura adjuntos.
BackgroundImage

(System.Drawing.Image)
Background

(System.Windows.Media.Brush) en el elemento hospedado
Establecer esta propiedad provoca el mismo comportamiento descrito para la asignación BackColor.
BackgroundImageLayout Background

(System.Windows.Media.Brush) en el elemento hospedado
Establecer esta propiedad provoca el mismo comportamiento descrito para la asignación BackColor.
Cursor

(System.Windows.Forms.Cursor)
Cursor

(System.Windows.Input.Cursor)
El cursor estándar de Windows Forms se traduce al cursor estándar de WPF correspondiente. Si el de Windows Forms no es un cursor estándar, se asigna el valor predeterminado.
Enabled IsEnabled Cuando se establece Enabled, el control ElementHost establece la propiedad IsEnabled en el elemento hospedado.
Font

(System.Drawing.Font)
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
El valor Font se traduce en un conjunto correspondiente de propiedades de fuente de WPF.
Bold FontWeight en el elemento hospedado Si el valor de Bold es true, el valor de FontWeight se establece en Bold.

Si el valor de Bold es false, el valor de FontWeight se establece en Normal.
Italic FontStyle en el elemento hospedado Si el valor de Italic es true, el valor de FontStyle se establece en Italic.

Si el valor de Italic es false, el valor de FontStyle se establece en Normal.
Strikeout TextDecorations en el elemento hospedado Solo se aplica al hospedar un control TextBlock.
Underline TextDecorations en el elemento hospedado Solo se aplica al hospedar un control TextBlock.
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
No se asigna a LeftToRight.

Yes se asigna a RightToLeft.
Visible Visibility El control ElementHost establece la propiedad Visibility en el elemento hospedado mediante las reglas siguientes:

- Visible = true se asigna a Visible.
- Visible = false se asigna a Hidden.

Vea también