Condividi tramite


Mapping delle proprietà Windows Form e WPF

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

  • Facilita il mapping delle modifiche delle proprietà rilevanti dall'ambiente host al controllo o elemento ospitato.

  • Fornisce la gestione predefinita per la mappatura 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 trasferite 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à PropertyMap sull'elemento WindowsFormsHost e la proprietà PropertyMap sul controllo ElementHost per accedere al mapping delle proprietà.

Mapping delle proprietà con l'elemento WindowsFormsHost

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

Hosting di Windows Presentation Foundation Windows Forme Comportamento di interoperabilità
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 usando le regole seguenti:

- Se Background è un colore a tinta unita, viene convertito e utilizzato per impostare la proprietà BackColor del controllo ospitato. La proprietà BackColor non è impostata sul controllo ospitato, perché il controllo ospitato può ereditare il valore della proprietà BackColor. 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 controllo WindowsFormsHost crea una bitmap dalla proprietà Background. Il controllo WindowsFormsHost assegna questa bitmap alla proprietà BackgroundImage del controllo ospitato. In questo modo si ottiene un effetto simile alla trasparenza. Nota: È possibile modificare questo comportamento oppure rimuovere l'associazione di proprietà Background.
Cursor Cursor Se il mapping predefinito non è stato riassegnato, il controllo WindowsFormsHost attraversa la gerarchia degli antenati finché non trova un antenato con la proprietà Cursor impostata. Questo valore viene tradotto al cursore Windows Forms più vicino corrispondente.

Se il mapping predefinito per la proprietà ForceCursor 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 mappa in No.

RightToLeft corrisponde a Yes.

Inherit non è mappato.

FlowDirection.RightToLeft corrisponde a RightToLeft.Yes.
FontStyle Style nel System.Drawing.Font del controllo ospitato Il set di proprietà WPF viene convertito in un Fontcorrispondente. Quando una di queste proprietà viene modificata, viene creata una nuova Font. Per Normal: Italic è disabilitato. Per Italic o Oblique: Italic è abilitato.
FontWeight Style nel System.Drawing.Font del controllo ospitato L'insieme delle proprietà WPF è tradotto in un corrispondente Font. Quando una di queste proprietà viene modificata, viene creata una nuova Font. Per Black, Bold, DemiBold, ExtraBold, Heavy, Medium, SemiBoldo UltraBold: Bold è abilitato. Per ExtraLight, Light, Normal, Regular, Thino UltraLight: Bold è disabilitato.
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Font

(System.Drawing.Font)
Il set di proprietà WPF viene convertito in un Fontcorrispondente. Quando una di queste proprietà viene modificata, viene creata una nuova Font. 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 novantaseiesimo di un pollice, e in Windows Forms come un settantaduesimo di pollice. La conversione corrispondente è:

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

(System.Windows.Media.Brush)
ForeColor

(System.Drawing.Color)
La mappatura della proprietà Foreground viene effettuata applicando le regole seguenti.

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

- I valori maggiori di MaxValue sono impostati su MaxValue.
- I valori minori di MinValue sono impostati su MinValue.
Visibility Visible - Visible corrisponde a Visible = true. Il controllo Windows Form ospitato è visibile. Non è consigliabile impostare in modo esplicito la proprietà Visible sul controllo ospitato su false.
- Collapsed mappa a Visible = true o false. Il controllo Windows Forms 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 proprietà Visible è impostata su true. Non è consigliabile impostare in modo esplicito la proprietà Visible sul controllo ospitato su false.

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

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

Aggiornamenti delle proprietà principali

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

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

Mappatura delle proprietà con il controllo ElementHost

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

  • Dimensionamento automatico

  • Colore di Sfondo

  • Immagine di Sfondo

  • Layout dell'immagine di sfondo

  • BindingContext

  • N/A (retain "CausesValidation" as it is if it is a technical term)

  • ContextMenu

  • ContextMenuStrip

  • Cursore

  • Darsena

  • Abilitato

  • Font

  • ForeColor

  • Ubicazione

  • Margine

  • Imbottitura

  • Genitore

  • Regione

  • DaDestraASinistra

  • Grandezza

  • TabIndex

  • Tabstop

  • Testo

  • Visibile

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

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

Hosting di Windows Forms 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 ridisegno con un ImageBrush. Se la proprietà BackColorTransparent è impostata su false (valore predefinito), questa ImageBrush si basa sull'aspetto del controllo ElementHost, incluse le proprietà BackColor, BackgroundImage, BackgroundImageLayout e qualsiasi gestore di disegno associato.

Se la proprietà BackColorTransparent è impostata su true, il ImageBrush si basa sull'aspetto del controllo padre di ElementHost, comprese le proprietà BackColor, BackgroundImagee BackgroundImageLayout dell'elemento padre, oltre ai gestori di disegno associati.
BackgroundImage

(System.Drawing.Image)
Background

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

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

(System.Windows.Forms.Cursor)
Cursor

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

(System.Drawing.Font)
FontFamily

FontSize

FontStretch

FontStyle

FontWeight
Il valore Font viene convertito in un set corrispondente di proprietà del tipo di carattere WPF.
Bold FontWeight sull'elemento ospitato Se Bold è true, FontWeight è impostato su Bold.

Se Bold è false, FontWeight è impostato su Normal.
Italic FontStyle sull'elemento ospitato Se Italic è true, FontStyle è impostato su Italic.

Se Italic è false, FontStyle è impostato su Normal.
Strikeout TextDecorations sull'elemento ospitato Si applica solo quando si ospita un controllo TextBlock.
Underline TextDecorations sull'elemento ospitato Si applica solo quando si ospita un controllo TextBlock.
RightToLeft

(System.Windows.Forms.RightToLeft)
FlowDirection

(FlowDirection)
No corrisponde a LeftToRight.

Yes mappa in RightToLeft.
Visible Visibility Il controllo ElementHost imposta la proprietà Visibility sull'elemento ospitato utilizzando le regole seguenti:

- Visible = true mappa in Visible.
- Visible = false mappa su Hidden.

Vedere anche