WPF: dal DataBinding ai Template - Prima parte

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

Aldilà della semplicità del nostro esempio possiamo specificare, sottoproprietà o proprietà indicizzate, per gestire questi scenari più complessi è necessario utilizzare una sintassi simile a quella del C#. Quando utilizziamo classi CLR come fonte dati, WPF al fine di recuperare il valore della proprietà indicata da Path ricorre alla Reflection. Questo potrebbe non giovare sulle performace, ma per ovviare a questo problema possiamo implementare nella nostra classe l'interfaccia ICustomTypeDescriptor o registrare un TypeDescriptionProvider. Da tenere sempre presente, poiché rischiamo di dimenticarlo presto, è la proprietà Path deve sempre specificare proprietà pubbliche e non campi. Infine nell'ultima riga utilizzando il metodo SetBinding stabiliamo il collegamento tra la proprietà Text della TextBox e l'oggetto Binding.

Poiché il metodo SetBinding è definito nella classe FrameworkElement, potremmo essere erroneamente portati a pensare che solo oggetti che ereditano direttamente o indirettamente da questo tipo siano utilizzabili per il DataBinding. Di fatto, il metodo SetBinding esposto dalla classe FrameworkElement è solo una scorciatoia all'omonimo membro della classe BindingOperations. Nonostante questo e, contrariamente a quanto accade per la proprietà Source ci sono dei vincoli sul tipo utilizzabile come destinazione del binding. Al fine di comprende meglio, modifichiamo il codice utilizzando il metodo SetBinding della classe statica BindingOperations.

public partial class MyWindow: System.Windows.Window
{

    public MyWindow ()
    {
        InitializeComponent();

        Binding _binding = new Binding();
        _binding.Source = MyScroll;
        _binding.Path = new PropertyPath("Value");
        BindingOperations.SetBinding(MyTextBox, TextBox.TextProperty, _binding);
    }

}

La firma del metodo SetBinding dichiara tre parametri: il primo è del tipo DependencyObject e rappresenta l'oggetto sul quale andremo a definire il binding; il secondo, del tipo DependecyProperty invece specifica la proprietà destinazione; per ultimo le informazioni sul binding del tipo BindingBase.

È facile così comprendere che al fine di creare il collegamento tra sorgente e la destinazione sia necessario che quest'ultima erediti da DependecyObject e la proprietà non sia una comune, ma bensì una DependecyProperty. Come sappiamo il tipo DependecyObject offre i servizi e l'infrastruttura necessari a calcolare i valori delle DepencyProperty e a fornire appropriate notifiche nel caso il valore di quest'ultime sia modificato.

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.
Nick60 scrive:
WPF: dal DataBinding ai Template - Prima parte

L'articolo è ottimo.Vorrei solo suggerire, per rendere il sorgente XAML più semplice e focalizzare l'attenzione del lettore sul tema trattato, di ...
giovedì 1 maggio 2008 | 1 risposta

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



TUTORIALS


IN EVIDENZA
MISC