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