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.
Nota |
---|
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 |
---|---|---|
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:
Nota
Il controllo ospitato non supporta la trasparenza.Qualsiasi colore assegnato a BackColor deve essere completamente opaco, con un valore alfa di 0xFF.
Nota
È possibile eseguire l'override di questo comportamento oppure è possibile rimuovere il mapping della proprietà Background.
|
||
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. |
||
LeftToRight corrisponde a No. RightToLeft corrisponde a Yes. Inherit non mappato. FlowDirection.RightToLeft corrisponde a RightToLeft.Yes. |
||
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. |
|
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. |
|
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. |
||
Il mapping della proprietà Foreground viene eseguito utilizzando le seguenti regole:
|
||
Quando IsEnabled è impostato, l'elemento WindowsFormsHost imposta la proprietà Enabled del controllo ospitato. |
||
Tutti i quattro valori della proprietà Padding del controllo Windows Forms ospitato sono impostati sullo stesso valore di Thickness. |
||
|
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 |
---|---|---|
(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. |
|
(System.Windows.Media.Brush) sull'elemento ospitato |
L'impostazione di questa proprietà causa lo stesso comportamento descritto per il mapping di BackColor. |
|
(System.Windows.Media.Brush) sull'elemento ospitato |
L'impostazione di questa proprietà causa lo stesso comportamento descritto per il mapping di BackColor. |
|
Il cursore standard Windows Forms viene convertito nel cursore standard WPF corrispondente. Se Windows Forms non è un cursore standard, viene assegnato quello predefinito. |
||
Quando Enabled è impostato, il controllo ElementHost imposta la proprietà IsEnabled dell'elemento ospitato. |
||
Il valore Font viene convertito in una serie corrispondente di proprietà del carattere di WPF. |
||
FontWeight sull'elemento ospitato |
Se Bold è true, FontWeight viene impostato su Bold. Se Bold è false, FontWeight viene impostato su Normal. |
|
FontStyle sull'elemento ospitato |
||
TextDecorations sull'elemento ospitato |
Valido solo per l'hosting di un controllo TextBlock. |
|
TextDecorations sull'elemento ospitato |
Valido solo per l'hosting di un controllo TextBlock. |
|
No corrisponde a LeftToRight. Yes corrisponde a RightToLeft. |
||
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