Layout con posizionamento assoluto e dinamico
Quando si crea una finestra in un'applicazione, è necessario decidere come disporre i controlli. È necessario anche decidere il comportamento dei controlli quando l'utente ridimensiona la finestra. Si tratta di problemi di posizionamento assoluto e dinamico.
Quando si crea una finestra in un'applicazione, impostare le dimensioni della finestra e dei relativi controlli. È necessario anche decidere il comportamento della finestra e dei controlli in caso di cambiamento del contenuto. Ad esempio, se si aggiunge un controllo Label a una finestra, è possibile specificare il comportamento dell'etichetta in caso di traduzione del testo in un'altra lingua. Si tratta di problemi di ridimensionamento dinamico.
Tipi di layout
Di seguito sono riportati tre tipi di layout che è possibile creare in WPF Designer per Visual Studio.
Assoluto
Gli elementi figlio vengono disposti specificando la posizione esatta relativa all'elemento padre corrispondente. Ad esempio, i controlli vengono disposti su un pannello specificando le coordinate di sinistra e superiori dei controlli relative al pannello. Gli elementi figlio non si spostano quando l'elemento padre viene ridimensionato. Per ulteriori informazioni, vedere Procedura: costruire un layout in base al posizionamento assoluto o Procedura dettagliata: costruzione di un layout in base al posizionamento assoluto.Dynamic
Specificare la disposizione degli elementi figlio e il wrapping ai relativi elementi padre. Ad esempio, è possibile disporre i controlli in un pannello e specificare un wrapping orizzontale. Se l'elemento padre viene ridotto, gli elementi figlio vengono spostati alla riga successiva. Se l'elemento padre viene ingrandito, gli elementi figlio vengono spostati alla riga precedente. Per ulteriori informazioni, vedere Procedura: costruire un layout dinamico o Procedura dettagliata: costruzione di un layout dinamico.Dinamico basato sui dati
Associare un controllo ai dati. Nel controllo vengono inseriti i dati e le righe e le colonne vengono adattate automaticamente ai dati.
Quando possibile, è preferibile utilizzare un layout dinamico. I layout dinamici sono i più flessibili e consentono all'utente finale maggiore controllo sull'ambiente. I layout dinamici consentono al contenuto di adattarsi alla localizzazione e ad altre modifiche di contenuto. I layout assoluti devono essere riservati ai casi in cui è importante il posizionamento preciso e immutabile degli elementi, o in cui è presente un solo elemento figlio, ad esempio un'immagine o un elemento grafico.
Nota
È possibile combinare layout assoluti e dinamici. Ad esempio, è possibile che una finestra presenti un layout complessivo dinamico, ma che in una parte della finestra venga utilizzato il posizionamento assoluto.
Nota
Impostare la proprietà UseLayoutRounding per specificare quando valori in pixel non integrali calcolati durante le sessioni Measure e Arrange vengono arrotondati ai valori in pixel interi. Questa proprietà viene ereditata dai controlli figlio.
Riquadri
WPF fornisce numerosi controlli Panel che supportano il posizionamento assoluto e dinamico. È possibile combinare i controlli Panel aggiungendo un controllo Panel come figlio di un altro. Per posizionare gli elementi nelle applicazioni si possono utilizzare i seguenti controlli Panel:
Panel |
Tipo di layout |
Descrizione |
---|---|---|
Dynamic |
Viene definita un'area dove è possibile posizionare gli elementi figlio in righe e colonne. |
|
Dynamic |
Viene definita un'area dove è possibile posizionare e disporre in stack gli elementi figlio lungo il bordo superiore, inferiore, sinistro o destro. |
|
Dynamic |
Gli elementi figlio vengono disposti automaticamente in posizione sequenziale, tramite lo spostamento del contenuto alla riga successiva al bordo del contenitore padre. L'ordinamento in sequenza si verifica dall'alto in basso o da sinistra a destra a seconda che l'orientamento sia impostato in orizzontale o in verticale. |
|
Dynamic |
Gli elementi figlio vengono disposti in una singola riga che può essere orientata orizzontalmente o verticalmente. |
|
Dynamic |
Gli elementi figlio vengono disposti automaticamente in righe e colonne. Le righe e le colonne sono ripartite uniformemente. Se un elemento non si adatta in una cella, viene troncato. |
|
Assoluto |
Viene definita un'area dove è possibile posizionare gli elementi figlio esplicitamente utilizzando le coordinate. |
Controlli
WPF fornisce controlli che supportano il posizionamento dinamico basato sui dati. Tali controlli possono essere associati ai dati e ridimensionati automaticamente per adattarsi a essi. È possibile utilizzare i seguenti controlli per visualizzare dati dinamicamente nelle applicazioni:
Controllo |
Tipo di layout |
Descrizione |
---|---|---|
Dinamico basato sui dati |
Viene visualizzato un elenco di elementi dei dati. |
|
Dinamico basato sui dati |
Gli elementi dei dati vengono visualizzati in colonne per un controllo di visualizzazione elenco. |
Ridimensionamento dinamico
Nel ridimensionamento dinamico, i controlli vengono configurati in modo da comprimersi o espandersi automaticamente per adattarsi al contenuto. Ad esempio, se si ridimensiona un controllo Label per adattare il testo a una lingua, e il testo viene tradotto in un'altra lingua, è possibile impostare il ridimensionamento automatico per l'adattamento al nuovo testo. Il posizionamento dinamico supporta il ridimensionamento dinamico regolando automaticamente la posizione dei controlli in caso di cambiamento delle dimensioni.
Di seguito vengono riportate le proprietà da impostare per creare layout dinamici:
Proprietà |
Valori |
Si applica a |
Note |
---|---|---|---|
* double, Auto, |
Finestre, controlli, colonne della griglia. |
Utilizzare il ridimensionamento automatico e proporzionale per la massima flessibilità. Per ulteriori informazioni, vedere la sezione successiva. * si applica solo alle colonne della griglia. |
|
* double, Auto, |
Finestre, controlli, righe della griglia. |
Utilizzare il ridimensionamento automatico e proporzionale per la massima flessibilità. Per ulteriori informazioni, vedere la sezione successiva. * si applica solo alle righe della griglia. |
|
double |
Finestre, controlli, colonne della griglia. |
Impostare su 0 per la massima flessibilità. |
|
double |
Finestre, controlli, righe della griglia. |
Impostare su 0 per la massima flessibilità. |
|
double, Infinity |
Finestre, controlli, colonne della griglia. |
Impostare su Infinity per la massima flessibilità. |
|
double, Infinity |
Finestre, controlli, righe della griglia. |
Impostare su Infinity per la massima flessibilità. |
|
Windows |
Impostare su CanResize per la massima flessibilità. Consente all'utente di ridimensionare la finestra. |
||
Windows |
Impostare su WidthAndHeight per la massima flessibilità. Consente il ridimensionamento automatico della finestra quando il contenuto si espande. |
Ridimensionamento automatico e proporzionale
Il ridimensionamento automatico viene utilizzato per consentire ai controlli di adattarsi al contenuto, anche se il contenuto cambia dimensioni. Il ridimensionamento proporzionale viene utilizzato per distribuire lo spazio disponibile fra le righe e le colonne di una griglia in base a proporzioni ponderate. In XAML (Extensible Application Markup Language), i valori proporzionali vengono espressi come * (o n*). Ad esempio, se si dispone di una griglia di 4 colonne, è possibile impostare la relativa larghezza come segue:
Colonna 1 |
Auto |
La colonna verrà ridimensionata per adattarsi al contenuto. |
Colonna 2 |
* |
Dopo il calcolo delle colonne automatiche, la colonna ottiene parte della larghezza rimanente. La colonna 2 sarà larga la metà rispetto alla colonna 4. |
Colonna 3 |
Auto |
La colonna verrà ridimensionata per adattarsi al contenuto. |
Colonna 4 |
2* |
Dopo il calcolo delle colonne automatiche, la colonna ottiene parte della larghezza rimanente. La colonna 4 sarà larga il doppio rispetto alla colonna 2. |
Per ulteriori informazioni, vedere Star.
Vedere anche
Concetti
Allineamento in Progettazione WPF
Cenni preliminari su WPF e Silverlight Designer