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

Il DataContext

Utilizzare il contesto dei dati di un controllo
Utilizzare il contesto dei dati di un controllo
Link copiato negli appunti

Ogni Content, Text e Panel Control espone la proprietà DataContext, che permette di contenere la fonte dati e stabilire se sia visibile oppure no.

Riprendiamo il frammento di codice XAML della scorsa lezione:

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

Quando un controllo figlio, come in questo caso, non ha impostato un DataContext, lo eredita dal padre. Ecco perché nell'esempio impostiamo il DataContext dello StackPanel.

LayoutRoot.DataContext = Team.GetAll().First();

Eseguiamo l'applicazione ed il risultato sarà simile al seguente:

Figura 74. Esempio di binding
Esempio di binding

Se vogliamo visualizzare una collezione di elementi dobbiamo utilizzare un ItemsControl, per esempio possiamo visualizzare la lista dei Team in un controllo ListBox. Per farlo dobbiamo impostare la proprietà ItemSource esposta da tutti gli ItemsControl. In fase di rendering il comportamento predefinito prevede che se non viene definito come visualizzare un oggetto contenuto nella lista verrà utilizzato il valore restituito dal metodo ToString. Diversamente possiamo indicare quale proprietà visualizzare tramite la proprietà DisplayMemberPath.

<StackPanel x:Name="LayoutRoot">
  <ListBox Margin="10"
           ItemsSource="{Binding}"
           DisplayMemberPath="Name" />        
</StackPanel>

In questo caso utilizziamo il Markup Extension senza parametri, per indicare al motore di Binding che siamo interessati a tutta la fonte dati, ovvero il DataContext. Dopodiché modifichiamo anche il code-behind in modo che carichi l'intera lista di Team.

private List<Team> teams;

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

Il risultato sarà il seguente:

Figura 75. Visualizzare una collezione di elementi
Visualizzare una collezione di elementi

Ti consigliamo anche