Logo UGIdotNET

Discussione 'Window layout'

# Pubblicato il 11 giu 2009 12.15 - Rispondi
Antonio Budano
Window layout
Come è possibile definire in WPF il layout di tutte le window dell'applicazione?

Voglio dire, se definisco uno standard in cui voglio che tutte le window abbiano un header panel, uno splitter, un tabcontrol, ecc. il cui contenuto varia in funzione della window, come posso definirli una volta per tutte?

In winforms definivo una FormBase che conteneva questi elementi, ereditavo da questa le form succesive e poi a design time aggiungevo gli elementi che necessitavo, in WPF mi pare che questo non sia fattibile.
Per adesso copio e incollo gli elementi base da un file nello xaml della window e poi aggiungo il resto.

Voi come fate?

Antonio
# Pubblicato il 11 giu 2009 14.18 - Rispondi
Michele Semprini
Re: Window layout
Direi che hai ragione - anche noi avevamo lo stesso problema.
La nostra soluzione è stata quella di definire una "windowContainer" dove è stata impostata tutta la struttura fissa + un ContentControl in cui carichiamo (attraverso Binding) una serie di UserControls, uno per ogni view da rappresentare. (In effetti il suggerimento è stato dell'inarrivabile Corrado)

Spero di essere stato d'aiuto
ciao, Michele

# Pubblicato il 11 giu 2009 14.48 - Rispondi
Antonio Budano
Re: Window layout
Grazie Michele per il suggerimento.
Hai qualche esempio da vedere?
Antonio
# Pubblicato il 12 giu 2009 8.48 - Rispondi
Michele Semprini
Re: Window layout
No, purtroppo qualche esempio non ce l'ho;
ma non dovrebbe essere particolarmente problematico riprodurre la cosa. Basta che fai in modo che la proprietà "Content" del ContentControl venga valorizzata con uno UserControl: noi abbiamo creato la proprietà "CurrentView" di Tipo UserControl nel ViewModel che mettiamo in Binding su "Content":

... ContentControl Content="{Binding CurrentView}" ...

Cambiando nel ViewModel il valore della proprietà, automaticamente ti verrà caricato lo UserControl relativo nella windowContainer.

m

© 2001 User Group Italiano UGIdotNET. Tutti i diritti riservati. Note legali. - Partita IVA 01927050185