Mapping di proprietà di Windows Form e WPF

Le tecnologie Windows Form e WPF hanno due modelli di proprietà simili ma diversi. Il mapping delle proprietà supporta l'interoperabilità tra le due architetture e offre le funzionalità seguenti:

  • Semplifica il mapping delle modifiche delle proprietà rilevanti nell'ambiente host al controllo o all'elemento ospitato.

  • Fornisce la gestione predefinita per il mapping delle proprietà più usate.

  • Consente di rimuovere, eseguire l'override o estendere facilmente le proprietà predefinite.

  • Assicura che le modifiche al valore della proprietà nell'host vengano rilevate e convertite automaticamente nel controllo o nell'elemento ospitato.

Nota

Gli eventi di modifica delle proprietà non vengono propagati nella gerarchia del controllo o dell'elemento host. La conversione delle proprietà non viene eseguita se il valore locale di una proprietà non cambia a causa dell'impostazione diretta, degli stili, dell'ereditarietà, del data binding o di altri meccanismi che modificano il valore della proprietà.

Utilizzare la proprietà sull'elemento PropertyMapWindowsFormsHost e la PropertyMap proprietà sul ElementHost controllo per accedere al mapping delle proprietà.

Mapping delle proprietà con l'elemento WindowsFormsHost

L'elemento WindowsFormsHost converte le proprietà WPF predefinite nei rispettivi equivalenti Windows Form usando la tabella di traduzione seguente.

Hosting di Windows Presentation Foundation WinForms Comportamento di interoperabilità
Background

(System.Windows.Media.Brush)
BackColor

(System.Drawing.Color)
L'elemento WindowsFormsHost imposta la BackColor proprietà del controllo ospitato e la BackgroundImage proprietà del controllo ospitato. Il mapping viene eseguito usando le regole seguenti:

- Se Background è un colore a tinta unita, viene convertito e usato per impostare la BackColor proprietà del controllo ospitato. La BackColor proprietà non è impostata sul controllo ospitato, perché il controllo ospitato può ereditare il valore della BackColor proprietà . Nota: il controllo ospitato non supporta la trasparenza. Qualsiasi colore assegnato a BackColor deve essere completamente opaco, con un valore alfa di 0xFF.

- Se Background non è un colore a tinta unita, il WindowsFormsHost controllo crea una bitmap dalla Background proprietà . Il WindowsFormsHost controllo assegna questa bitmap alla BackgroundImage proprietà del controllo ospitato. In questo modo si ottiene un effetto simile alla trasparenza. Nota: è possibile eseguire l'override di questo comportamento oppure rimuovere il mapping delle Background proprietà.
Cursor Cursor Se il mapping predefinito non è stato riassegnato, WindowsFormsHost il controllo attraversa la gerarchia predecessore finché non trova un predecessore con il relativo Cursor set di proprietà. Questo valore viene convertito nel cursore Windows Form corrispondente più vicino.

Se il mapping predefinito per la ForceCursor proprietà non è stato riassegnato, l'attraversamento si arresta sul primo predecessore con ForceCursor impostato su true.
FlowDirection

(System.Windows.FlowDirection)
RightToLeft

(System.Windows.Forms.RightToLeft)
LeftToRight esegue il mapping a No.

RightToLeft esegue il mapping a Yes.

Inherit non è mappato.

FlowDirection.RightToLeft esegue il mapping a RightToLeft.Yes.
FontStyle Style nel controllo ospitato System.Drawing.Font Il set di proprietà WPF viene convertito in un oggetto corrispondente Font. Quando una di queste proprietà viene modificata, viene creata una nuova Font proprietà. Per Normal: Italic è disabilitato. Per Italic o Oblique: Italic è abilitato.
FontWeight Style nel controllo ospitato System.Drawing.Font Il set di proprietà WPF viene convertito in un oggetto corrispondente Font. Quando una di queste proprietà viene modificata, viene creata una nuova Font proprietà. Per Black, BoldDemiBold, ExtraBold, Heavy, Medium, SemiBold, o UltraBold: Bold è abilitato. Per ExtraLight, Light, NormalRegular, , Thino UltraLight: Bold è disabilitato.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
Il set di proprietà WPF viene convertito in un oggetto corrispondente Font. Quando una di queste proprietà viene modificata, viene creata una nuova Font proprietà. Il controllo Windows Form ospitato viene ridimensionato in base alle dimensioni del carattere.

Le dimensioni dei tipi di carattere in WPF sono espresse come un sesto di novesimi di pollice e in Windows Form come un settantesimo secondo di un pollice. La conversione corrispondente è:

Windows Form dimensione del carattere = dimensione del carattere WPF * 72,0 / 96,0.
Foreground

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
Il Foreground mapping delle proprietà viene eseguito usando le regole seguenti:

- Se Foreground è un SolidColorBrushoggetto , usare Color per ForeColor.
- Se Foreground è un oggetto GradientBrush, usare il colore di con il valore di GradientStop offset più basso per ForeColor.
- Per qualsiasi altro Brush tipo, lasciare ForeColor invariato. Ciò significa che viene usato il valore predefinito.
IsEnabled Enabled Quando IsEnabled è impostato, WindowsFormsHost l'elemento imposta la Enabled proprietà nel controllo ospitato.
Padding Padding Tutti e quattro i valori della Padding proprietà nel controllo Windows Form ospitato vengono impostati sullo stesso Thickness valore.

- I valori maggiori di MaxValue sono impostati su MaxValue.
- I valori minori di MinValue sono impostati su MinValue.
Visibility Visible - Visible esegue il mapping a Visible = true. Il controllo Windows Form ospitato è visibile. Non è consigliabile impostare in modo esplicito la Visible proprietà sul controllo false ospitato su .
- Collapsedesegue il mapping a Visible = true o .false Il controllo Windows Form ospitato non viene disegnato e la relativa area viene compressa.
- Hidden: il controllo Windows Form ospitato occupa spazio nel layout, ma non è visibile. In questo caso, la Visible proprietà è impostata su true. Non è consigliabile impostare in modo esplicito la Visible proprietà sul controllo false ospitato su .

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

Per altre informazioni, vedere Procedura dettagliata: Mapping delle proprietà tramite l'elemento WindowsFormsHost.

Aggiornamenti alle proprietà padre

Le modifiche apportate alla maggior parte delle proprietà padre causano notifiche al controllo figlio ospitato. Nell'elenco seguente vengono descritte le proprietà che non causano notifiche quando i valori cambiano.

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

Mapping delle proprietà con il controllo ElementHost

Le proprietà seguenti forniscono una notifica di modifica predefinita. Non chiamare il metodo quando si esegue il OnPropertyChanged mapping di queste proprietà:

  • AutoSize

  • ColoreSfondo

  • BackgroundImage

  • BackgroundImageLayout

  • Bindingcontext

  • CausesValidation

  • ContextMenu

  • ContextMenuStrip

  • Cursore

  • Ancora

  • Attivato

  • Tipo di carattere

  • ColorePrimoPiano

  • Titolo

  • Margine

  • Padding

  • Parent

  • Area

  • RightToLeft

  • Dimensione

  • TabIndex

  • TabStop

  • Testo

  • Visibile

Il ElementHost controllo converte le proprietà predefinite Windows Form negli equivalenti WPF usando la tabella di traduzione seguente.

Per altre informazioni, vedere Procedura dettagliata: Mapping delle proprietà tramite il controllo ElementHost.

hosting Windows Form Windows Presentation Foundation Comportamento di interoperabilità
BackColor

(System.Drawing.Color)
Background

(System.Windows.Media.Brush) nell'elemento ospitato
L'impostazione di questa proprietà forza un aggiornamento con un oggetto ImageBrush. Se la BackColorTransparent proprietà è impostata su false (il valore predefinito), si ImageBrush basa sull'aspetto del ElementHost controllo, incluse le relative BackColorproprietà , BackgroundImageLayoutBackgroundImage, ed eventuali gestori di vernice associati.

Se la BackColorTransparent proprietà è impostata su true, l'oggetto ImageBrush si basa sull'aspetto dell'elemento ElementHost padre del controllo, incluse le proprietà , BackgroundImage, BackgroundImageLayout e i gestori di disegno associati dell'elemento BackColorpadre.
BackgroundImage

(System.Drawing.Image)
Background

(System.Windows.Media.Brush) nell'elemento ospitato
L'impostazione di questa proprietà determina lo stesso comportamento descritto per il BackColor mapping.
BackgroundImageLayout Background

(System.Windows.Media.Brush) nell'elemento ospitato
L'impostazione di questa proprietà determina lo stesso comportamento descritto per il BackColor mapping.
Cursor

(System.Windows.Forms.Cursor)
Cursor

(System.Windows.Input.Cursor)
Il cursore standard Windows Form viene convertito nel cursore standard WPF corrispondente. Se il Windows Form non è un cursore standard, viene assegnato il valore predefinito.
Enabled IsEnabled Quando Enabled è impostato, il ElementHost controllo imposta la IsEnabled proprietà sull'elemento ospitato.
Font

(System.Drawing.Font)
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Il Font valore viene convertito in un set corrispondente di proprietà del tipo di carattere 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 Si applica solo quando si ospita un TextBlock controllo .
Underline TextDecorations sull'elemento ospitato Si applica solo quando si ospita un TextBlock controllo .
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
No esegue il mapping a LeftToRight.

Yes esegue il mapping a RightToLeft.
Visible Visibility Il ElementHost controllo imposta la Visibility proprietà sull'elemento ospitato utilizzando le regole seguenti:

- Visible = true esegue il mapping a Visible.
- Visible = false esegue il mapping a Hidden.

Vedi anche