Nessun risultato. Prova con un altro termine.
Guide
Notizie
Software
Tutorial
  • Lezione 50 di 59
  • livello principiante
Indice lezioni

Il databinding

Associare e sincronizzare una fonte dati agli elementi dell'interfaccia utente
Associare e sincronizzare una fonte dati agli elementi dell'interfaccia utente
Link copiato negli appunti

Il Data Binding è quel meccanismo che consente di associare e sincronizzare una fonte dati agli elementi dell'interfaccia utente. In fase di design, grazie a XAML, possiamo descrivere in maniera dichiarativa le relazioni di Binding senza preoccuparci di collegare la fonte dati.

Chiariamo questi concetti con un esempio: supponiamo di avere il seguente oggetto da visualizzare.

public class Team
{
  public string Name{ get; set; }
  public string CurrentDriver { get; set; }
  
  public static List<Team> GetAll()
  {
    return new List<Team>
    {
      new Team { Name = "Citroen Total World Rally Team", 
                 CurrentDriver = "Sebastian Loeb" },
      new Team { Name = "BP Ford Abu Dhabi World Rally Team", 
                 CurrentDriver = "Mikko Hirvonen" }
    };
  }
}

La classe oltre alle semplici proprietà contiene un metodo statico che restituisce un insieme di istanze predefinite di Team. Per collegare la fonte dati con le proprietà dei controlli utilizziamo il Markup Extension Binding, al quale possiamo passare una serie di parametri come il nome della proprietà da collegare e una modalità di Binding, tra quelle descritte nella seguente tabella:

Modalità Descrizione
OneWay La sincronizzazione dei dati si propaga solo dalla sorgente verso l'interfaccia utente
OneTime La sincronizzazione dei dati si propaga solo dalla sorgente verso l'interfaccia utente e solo la prima volta
TwoWay La sincronizzazione dei dati si propaga in entrambe le direzioni

Procediamo dichiarando in XAML una serie di controlli collegati alle proprietà di un singolo oggetto Team.

<StackPanel x:Name="LayoutRoot">
  <TextBlock Text="{Binding Name}" />
  <Button Content="{Binding CurrentDriver}" />
</StackPanel>

La definizione dell'interfaccia non ha richiesto nessun tipo di collegamento con i dati. L'unico limite nell'attuale architettura di Binding di Silverlight da tenere di conto è che la destinazione deve essere una DependencyProperty.

Prima di eseguire l'applicazione dobbiamo dare "in pasto" al motore di Binding un'istanza della classe Team. Per farlo dobbiamo impostare, nel code-behind, tale istanza come valore della proprietà DataContext del controllo StackPanel.

public Page()
{
  InitializeComponent();
  LayoutRoot.DataContext = Team.GetAll().First();
}

Ti consigliamo anche