Riutilizzare le Dependency Property nei propri controlli

di Cristian Civera, in Windows Presentation Foundation, XAML,

L'intero modello ad oggetti di Windows Presentation Foundation ha il compito di rappresentare in modo logico gli elementi grafici presenti nell'applicazione. Le classi per mantenere le informazioni fanno uso delle Dependency Property le quali permettono di persistere in modo semplice i tipi, renderli ereditabili tra elementi diversi, validarne i valori, ricevere notifiche quando il valore cambia e sono in grado di supportare stili, risorse e animazioni.

Spesso nello sviluppo di un nuovo controllo si può avere la necessità di esporre una proprietà dalle caratteristiche simili ad altre già definite tramite la classe DependencyProperty. Poiché queste sono per convenzione esposte tramite campo statico pubblico è possibile chiamare il metodo d'istanza AddOwner e ricevere così una "copia" dei metadata della proprietà per poterla riutilizzare nel proprio controllo.

public class MioControllo : Shape
{
    public static DependencyProperty FontSizeProperty = TextElement.FontSizeProperty.AddOwner(typeof(MioControllo));

    public double FontSize
    {
        get
        {
            return (double)base.GetValue(FontSizeProperty);
        }
        set
        {
            base.SetValue(FontSizeProperty, value);
        }
    }
}

L'esempio precedente riutilizza la proprietà FontSizeProperty definita sulla classe TextElement per esporla anche nel controllo personalizzato, così come fa anche per esempio la classe Control. Ciò consente di ereditare il valore di FontSize da un elemento padre se questo ha definito un FontSize o se tramite style è stata impostata tale proprietà anche non direttamente su MioControllo, ma sul genitore. Così facendo inoltre è concesso da XAML riferirsi alla proprietà xxx.FontSize identificandolo sia con TextElement, Control, MioControllo o qualsiasi altro controllo ne faccia uso.

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.

Approfondimenti

I più letti di oggi