In generale quindi le Dependency Properties consentono di monitorare e notificare la variazione del valore della proprietà tramite metodi di callback e di dotarle di valori di default e di un sistema di validazione autosufficiente.
Con questa ampia varietà di metodi per la determinazione del valore di una Dependency Property, comprendere l'ordine di applicazione e la precedenza risulta fondamentale per non trovarci con risultati inattesi. Le animazioni, per esempio, durante la loro esecuzione hanno la precedenza su qualsiasi altro tipo di determinazione del valore della proprietà, anche specificato localmente. In ordine decrescente di precedenza troviamo poi i valori locali impostati direttamente tramite risorse, databinding, template, temi ed infine ereditarietà.
Come abbiamo già visto, il sistema più semplice per impostare una proprietà è sfruttare la sintassi dichiarativa del linguaggio XAML.
Dichiarato un elemento è sufficiente impostare il valore della proprietà come attributo XML:
<Button Background="Aqua">Hello WPF</Button>Questo tipo di sintassi non differisce molto da quanto ogni sviluppatore ASP.Net è abituato da tempo a fare.
Quando il tipo della proprietà è troppo complesso per essere specificato tramite una semplice stringa, situazione che si presenta tipicamente nel caso in cui il costruttore del tipo richieda un largo numero di parametri, WPF mette a disposizione una sintassi alternativa chiamata Property Element, che consiste nello specificare il valore delle proprietà, nella forma oggetto.proprietà., come un elemento interno seguendo le normali regole della sintassi XML.
<Button Name="myButton" Content="hello">
<Button.Background>
<LinearGradientBrush StartPoint="0,0" EndPoint="0,1.5">
<LinearGradientBrush.GradientStops>
<GradientStop Color="Gold" Offset="0"/>
<GradientStop Color="White" Offset="1"/>
</LinearGradientBrush.GradientStops>
</LinearGradientBrush>
</Button.Background>
</Button>Nel precedente esempio, lo sfondo del bottone è costituito da un gradente lineare. Vista la complessità dell'oggetto LinearGradientBrush è impossibile specificarne tutte le caratteristiche con la sintassi nomeProprietà=valore.
Impostare il valore di una proprietà in modo dichiarativo in WPF non presenta nessuna differenza da quanto già siamo abituati a fare, in quanto come già detto in precedenza ogni Dependency Property dispone di una classica proprietà wrapper in stile CLR alla quale in C# si accede così:
Button myButton = new Button();
myButton.Width = 200;Contenuti dell'articolo
- Pagina 1
- Pagina 3
- Pagina 4
- Pagina 5
Aggiungi un nuovo commento »»»
Per inserire un commento, devi registrarti alla nostra community.





Difficoltà
Stampa
Download 


10annidi.ASPItalia.com: iscriviti alla competizione e vinci fantastici premi ogni mese!
