Layout e gestione degli elementi d'interfaccia in Windows Presentation Foundation

5 pagine in totale: <<Indietro 1 [2] 3 4 5 Avanti >>

Margini

La proprietà Margin imposta la distanza tra l'elemento e il suo spazio di visualizzazione che può essere uniforme usando la sintassi Margin="20".

<Button Margin="20">Hello!</Button>

In alternativa possiamo specificare valori indipendenti per il margine sinistro, superiore, destro e inferiore utilizzando come valore Margin="10,5,10,5".

<Button Margin="10,5,10,5">Hello!</Button>

Possiamo inoltre specificare solo due valori per indicare la coppia margine sinistro/destro e la coppia margine superiore/inferiore.

<Button Margin="10,5">Hello!</Button>

Layout System

Dopo la breve analisi delle proprietà che permettono il posizionamento di un elemento, è chiaro come il risultato prodotto dipenda in larga parte da come il loro contenitore alloca lo spazio disponibile per la visualizzazione.
In WPF questi contenitori sono derivati dalla classe astratta Panel e partecipano al processo di misurazione, dimensionamento e posizionamento degli elementi che prende il nome di Layout System.

Senza scendere nel dettaglio dell'implementazione, il Layout System si compone essenzialmente di due passaggi: per primo la misurazione dello spazio desiderato dall'elemento figlio e l'eventuale ridimensionamento, per secondo il posizionamento con la dimensione appena ottenuta.
Il processo è completamente automatico, inizia nel momento in cui l'interfaccia deve essere renderizzata e la durata ed il costo in termini di prestazioni è direttamente proporzionale al numero di elementi contenuti dal Panel e alla complessità del Layout da presentare.

Panel

I componenti che in WPF estendono la classe Panel e controllano il layout dei loro figli sono: Canvas, DockPanel, Grid, StackPanel, VirtualizingStackPanel e WrapPanel. Ognuno di essi fornisce una gestione differente dello spazio di visualizzazione.

Canvas

È il tipo di pannello più semplice e permette di posizionare gli elementi figlio specificandone l'offset dai margini del Canvas. A differenza degli altri pannelli che analizzeremo in seguito è l'unico a non ridimensionare mai gli elementi figli e che ne consente il rendering oltre le proprie dimensioni.

L'elemento figlio informa quindi il Canvas della sua posizione mediante l'utilizzo delle attached property e, come vedremo in seguito, tutti i pannelli ne fanno un largo uso.

<Canvas Width="200" Height="200"> 
    <Canvas.Background> 
        <RadialGradientBrush RadiusX="1.5" RadiusY="1" Center="0.9,1.5" GradientOrigin="0.9,1.5"> 
            <RadialGradientBrush.GradientStops> 
                <GradientStop Color="#FF473218" Offset="0"/> 
                <GradientStop Color="#FF978065" Offset="1"/> 
            </RadialGradientBrush.GradientStops> 
        </RadialGradientBrush> 
    </Canvas.Background> 
 
    <Button Canvas.Left="20" Canvas.Top="50" >Button 1</Button> 
</Canvas>

Posizionamento con Canvas

5 pagine in totale: <<Indietro 1 [2] 3 4 5 Avanti >>

Contenuti dell'articolo

Commenti
Dai un voto a questo articolo, ci aiuterà a migliorare il nostro sito (1 è il voto minimo, 5 il massimo).

Per procedere al rating dell'articolo devi essere autenticato.

Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.

TUTORIALS


IN EVIDENZA
MISC