ASP.Net  »  Guide  »  Guida Silverlight 

Il DataContext



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

Ultimi articoli ASP.Net

LINQ e la trappola della 'deferred execution'

Una "trappola" in cui si può incappare utilizzando il risultato di...

C#, le Custom Type Conversion

Conversioni personalizzate tra classi, creare metodi particolari per...

Introduzione a Entity Framework

Il framework ORM messo a disposizione da .NET

Repeater: visualizzare un feed RSS

Utilizzare il controllo XMLDataSource e sfruttare il metodo XPath()...

Repeater, il server control "semplice"

Cos'è e come funziona il controllo Repeater

Altri articoli

Guide ASP.Net

Guida ASP.NET MVC Best Practices

Un workflow dettagliato e ricco di suggerimenti pratici per...

Guida ASP.NET Starter Kit

Un modo semplice per imparare ad utilizzare le tecnologie Microsoft...

Guida Visual Studio 2010

L'ambiente di sviluppo di riferimento per sviluppare applicazioni su...

Altre guide

Newsletter @Microsoft Dev

Ogni giovedì, direttamente nella tua e-mail: articoli, guide, tutorial e script ASP, ASP.Net, SQL server e IIS.

Iscriviti alla newsletter

Altre newsletter

Corsi in aula

Corso Progettazione database

11 Maggio 2012 a Milano
Disponibilità: 6 Posti

Amministratore di Reti Windows Server 2008

11 Giugno 2012 a Milano
Disponibilità: 5 Posti

Nessun corso previsto