Condividi tramite


Mapping di proprietà di Windows Form e WPF

Le tecnologie Windows Forms e WPF hanno due modelli di proprietà simili, ma diversi. Il mapping della proprietà supporta l'interazione tra le due architetture e fornisce le seguenti funzionalità:

  • Semplifica l'esecuzione del mapping di modifiche delle proprietà pertinenti nell'ambiente host al controllo o all'elemento ospitato.

  • Fornisce la gestione predefinita del mapping della maggior parte delle proprietà più comuni.

  • Consente rimozione, override o estensione semplici delle proprietà predefinite.

  • Garantisce che le modifiche dei valori delle proprietà dell'host vengano rilevate e convertite automaticamente per il controllo o elemento ospitato.

NotaNota

Gli eventi di modifica delle proprietà non vengono propagati al controllo o alla gerarchia di elementi che funge da host.La conversione delle proprietà non viene eseguita se il valore locale di una proprietà non cambia per l'impostazione diretta, gli stili, l'ereditarietà, l'associazione dati o altri meccanismi che modificano il valore della proprietà.

Utilizzare la proprietà PropertyMap per l'elemento WindowsFormsHost e la proprietà PropertyMap per il controllo ElementHost per accedere al mapping delle proprietà.

Mapping delle proprietà con l'elemento WindowsFormsHost

L'elemento WindowsFormsHost converte le proprietà WPF predefinite nei relativi equivalenti Windows Forms utilizzando la seguente tabella di conversione.

Windows Presentation Foundation che funge da host

Windows Form

Comportamento di interazione

Background

(System.Windows.Media.Brush)

BackColor

(System.Drawing.Color)

L'elemento WindowsFormsHost imposta la proprietà BackColor del controllo ospitato e la proprietà BackgroundImage del controllo ospitato. Il mapping viene eseguito utilizzando le seguenti regole:

  • Se Background è un colore a tinta unita, viene convertito e utilizzato per impostare la proprietà BackColor del controllo ospitato. La proprietà BackColor non viene impostata sul controllo ospitato, perché il controllo ospitato può ereditare il valore della proprietà BackColor.

NotaNota
Il controllo ospitato non supporta la trasparenza.Qualsiasi colore assegnato a BackColor deve essere completamente opaco, con un valore alfa di 0xFF.
NotaNota
È possibile eseguire l'override di questo comportamento oppure è possibile rimuovere il mapping della proprietà Background.

Cursor

Cursor

Se il mapping predefinito non è stato riassegnato, il controllo WindowsFormsHost attraversa la struttura gerarchica dei predecessori finché non rileva un predecessore con la proprietà Cursor impostata. Questo valore viene convertito nel cursore di Windows Forms più corrispondente.

Se il mapping predefinito per la proprietà ForceCursor non è stato riassegnato, lo scorrimento si interrompe sul primo predecessore con ForceCursor impostato su true.

FlowDirection

(System.Windows.FlowDirection)

RightToLeft

(System.Windows.Forms.RightToLeft)

LeftToRight corrisponde a No.

RightToLeft corrisponde a Yes.

Inherit non mappato.

FlowDirection.RightToLeft corrisponde a RightToLeft.Yes.

FontStyle

La proprietà Style dell'oggetto System.Drawing.Font del controllo ospitato

La serie di proprietà WPF viene convertita in un oggetto Font corrispondente. Quando una di queste proprietà viene modificata, viene creato un nuovo oggetto Font. Per Normal: Italic è disabilitato. Per Italic o Oblique: Italic è abilitato.

FontWeight

La proprietà Style dell'oggetto System.Drawing.Font del controllo ospitato

La serie di proprietà WPF viene convertita in un oggetto Font corrispondente. Quando una di queste proprietà viene modificata, viene creato un nuovo oggetto Font. Per Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBold o UltraBold: Bold è abilitato. Per ExtraLight, Light, Normal, Regular, Thin o UltraLight: Bold è disabilitato.

FontFamily

FontSize

FontStretch

FontStyle

FontWeight

Font

(System.Drawing.Font)

La serie di proprietà WPF viene convertita in un oggetto Font corrispondente. Quando una di queste proprietà viene modificata, viene creato un nuovo oggetto Font. Il controllo Windows Forms ospitato viene ridimensionato in base alla dimensione del carattere.

La dimensione del carattere in WPF è espressa come un novantaseiesimo di pollice e in Windows Forms come un settantaduesimo di pollice. La conversione corrispondente è:

Dimensione del carattere di Windows Forms = dimensione del carattere di WPF * 72,0/96,0.

Foreground

(System.Windows.Media.Brush)

ForeColor

(System.Drawing.Color)

Il mapping della proprietà Foreground viene eseguito utilizzando le seguenti regole:

IsEnabled

Enabled

Quando IsEnabled è impostato, l'elemento WindowsFormsHost imposta la proprietà Enabled del controllo ospitato.

Padding

Padding

Tutti i quattro valori della proprietà Padding del controllo Windows Forms ospitato sono impostati sullo stesso valore di Thickness.

Visibility

Visible

  • Visible corrisponde a Visible = true. Il controllo Windows Forms è visibile. L'impostazione esplicita della proprietà Visible del controllo ospitato su false non è un'operazione consigliata.

  • Collapsed corrisponde a Visible = true o a false. Il controllo Windows Forms ospitato non viene tracciato e l'area relativa viene compressa.

  • Hidden: il controllo Windows Forms ospitato occupa spazio del layout, ma non è visibile. In questo caso la proprietà Visible è impostata su true. L'impostazione esplicita della proprietà Visible del controllo ospitato su false non è un'operazione consigliata.

Le proprietà associate degli elementi contenitore sono completamente supportate dall'elemento WindowsFormsHost.

Per ulteriori informazioni, vedere Procedura dettagliata: mapping di proprietà tramite l'elemento WindowsFormsHost.

Aggiornamenti relativi alle proprietà padre

Le modifiche alla maggior parte delle proprietà padre causano notifiche al controllo figlio ospitato. L'elenco riportato di seguito descrive le proprietà che non causano notifiche quando i valori cambiano.

Se ad esempio si modifica il valore della proprietà Background dell'elemento WindowsFormsHost, la proprietà BackColor del controllo ospitato non cambia.

Mapping delle proprietà con il controllo ElementHost

Le proprietà riportate di seguito forniscono notifiche di modifica incorporate. Non chiamare il metodo OnPropertyChanged durante il mapping di queste proprietà:

  • AutoSize

  • BackColor

  • BackgroundImage

  • BackgroundImageLayout

  • BindingContext

  • CausesValidation

  • ContextMenu

  • ContextMenuStrip

  • Cursore

  • Dock

  • Enabled

  • Tipo di carattere

  • ForeColor

  • Location

  • Margin

  • Riempimento

  • Padre

  • Region

  • RightToLeft

  • Dimensione

  • TabIndex

  • TabStop

  • Text

  • Visible

Il controllo ElementHost converte le proprietà di Windows Forms predefinite nei relativi equivalenti di WPF mediante la tabella di conversione riportata di seguito.

Per ulteriori informazioni, vedere Procedura dettagliata: mapping delle proprietà tramite il controllo ElementHost.

Windows Form che funge da host

Windows Presentation Foundation

Comportamento di interazione

BackColor

(System.Drawing.Color)

Background

(System.Windows.Media.Brush) sull'elemento ospitato

L'impostazione di questa proprietà impone un aggiornamento con ImageBrush. Se la proprietà BackColorTransparent è impostata su false (il valore predefinito), ImageBrush si basa sull'aspetto del controllo ElementHost, comprese le proprietà BackColor, BackgroundImage, BackgroundImageLayout relative e qualsiasi gestore dell'evento Paint associato.

Se la proprietà BackColorTransparent è impostata su true, ImageBrush si basa sull'aspetto dell'elemento padre del controllo ElementHost, comprese le proprietà BackColor, BackgroundImage, BackgroundImageLayout dell'elemento padre e qualsiasi gestore dell'evento Paint associato.

BackgroundImage

(System.Drawing.Image)

Background

(System.Windows.Media.Brush) sull'elemento ospitato

L'impostazione di questa proprietà causa lo stesso comportamento descritto per il mapping di BackColor.

BackgroundImageLayout

Background

(System.Windows.Media.Brush) sull'elemento ospitato

L'impostazione di questa proprietà causa lo stesso comportamento descritto per il mapping di BackColor.

Cursor

(System.Windows.Forms.Cursor)

Cursor

(System.Windows.Input.Cursor)

Il cursore standard Windows Forms viene convertito nel cursore standard WPF corrispondente. Se Windows Forms non è un cursore standard, viene assegnato quello predefinito.

Enabled

IsEnabled

Quando Enabled è impostato, il controllo ElementHost imposta la proprietà IsEnabled dell'elemento ospitato.

Font

(System.Drawing.Font)

FontFamily

FontSize

FontStretch

FontStyle

FontWeight

Il valore Font viene convertito in una serie corrispondente di proprietà del carattere di WPF.

Bold

FontWeight sull'elemento ospitato

Se Bold è true, FontWeight viene impostato su Bold.

Se Bold è false, FontWeight viene impostato su Normal.

Italic

FontStyle sull'elemento ospitato

Se Italic è true, FontStyle viene impostato su Italic.

Se Italic è false, FontStyle viene impostato su Normal.

Strikeout

TextDecorations sull'elemento ospitato

Valido solo per l'hosting di un controllo TextBlock.

Underline

TextDecorations sull'elemento ospitato

Valido solo per l'hosting di un controllo TextBlock.

RightToLeft

(System.Windows.Forms.RightToLeft)

FlowDirection

(FlowDirection)

No corrisponde a LeftToRight.

Yes corrisponde a RightToLeft.

Visible

Visibility

Il controllo ElementHost imposta la proprietà Visibility dell'elemento ospitato utilizzando le seguenti regole:

Vedere anche

Attività

Procedura dettagliata: mapping di proprietà tramite l'elemento WindowsFormsHost

Procedura dettagliata: mapping delle proprietà tramite il controllo ElementHost

Riferimenti

ElementHost

WindowsFormsHost

Concetti

Interoperatività di WPF e Win32

Interoperatività di WPF e Windows Form