ma quante belle propietà; che hai...per impostarti meglio...

di Marco Leoncini, in WPF,

refusi fiabeschi apparte, nella tarda sera di ieri, mi sono deciso a sviluppare, qualcosa di concreto con Avalon.
Il primo problema che si è presentato è la realizzazione di un Control personalizzato, per fornire metodi e proprietà, che potessero facilitare, da classi esterne, l'aggiunta di pulsati ecc ecc.
se fino ad adesso, eravamo abituati a vedere una proprietà "solo" come modo sicuro per accedere ad un campo privato, nascondendo la complessità del codice di validazione e altro, Avalon ne aggiunge due nuovi tipi:

Dependency Property

Attached Properties

ma facciamo un passo in dietro, ci sono diverse vie per impostare una proprietà

impostarla localmente:

<Button Background="red"/>

con il tag della proprietà

<Button>
<Button.Background>
<HorizontalGradient StartColor="Blue" EndColor="White"/>
</Button.Background>
</Button>

Tramite altri tipi

<CheckBox DockPanel.Dock="Top">Test</CheckBox>

con il DataBind o attraverso le risorse (globali o locali)

<DockPanel.Resources>
<SolidColorBrush x:Key="MyBrush" Color="gold"/> 
</DockPanel.Resources>
<Text Foreground="{StaticResource MyBrush}" TextContent="Text" />

tramite la classe Style, e non dimentichiamo la possibilità di animarle.

tutto questo è reso possibile dal "sistema delle proprietà"; che Avalon mette a disposizione.
possiamo trarre vantaggio da questa infrastruttura:
- "estendendo" una proprietà con una Dependency Property per fornire servizi di Stylig o DataBinding,
- dichiarando una proprietà in una classe, per utilizzarla su altri tipi (Attached Properties), il panel le usa per impostare il layout dei propri figli.

Dependency Property

per creare una Dependency Property, è necessario registrarla nel sistema di dipendenze di Avalon, tramite il metodo DependencyProperty.Register.
le Dependency Property possono essere utilizzate solo dai tipi che ereditano da DependencyObject.
Quando una propietà deve supportare gli Styles, DataBinding, Animazioni, Ereditarietà, Invalidazione e Valori di Default è qua che ci dobbiamo rivolgere

Attached Propeties

Come dicevo, in alcuni casi può essere utile, dichiarare una proprietà, che poi verrà usata su alri tipi.
Queste proprietà vengono chiamate Attached Propertie e devono essere registate tramite il metodo DependencyProperty.RegisterAttached.
è possibile utilizzarle su ogni oggetto derivato da DependencyObject ( e sono molti ).

un esempio di Attached Properties è DockPanel.Dock, questa proprietà è stata creata per essere utilizzata su gli oggetti contenuti nel DockPanel al fine di impostarne il Lyaout.

<CheckBox DockPanel.Dock="Top">Test</CheckBox>
DockPanel.SetDock(myCheckbox, Dock.Top);

in genere ricorreremo alle Attached Propeties per impostare il Layout degli elementi figli rispetto al padre

Commenti

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

Per inserire un commento, devi avere un account.

Fai il login e torna a questa pagina, oppure registrati alla nostra community.

Nella stessa categoria
I più letti del mese