I controlli di Silverlight 2.0

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

Questa proprietà è in grado di accettare qualsiasi enumeratore, e quindi anche una lista di oggetti complessi; supponiamo allora di avere una classe Book, ad esempio come quello che segue:

public class Book 
{ 
    public string Title { get; set; } 
    public string Author { get; set; } 
    public string ImageUrl { get; set; } 
    public bool Published { get; set; } 
    public DateTime PublishDate { get; set; } 
} 

e di collegarne una lista ad una ListBox. Un binding simile a quello dell'esempio precedente con un insieme di quattro libri,

this.lstBooks.ItemsSource = Book.GetSomeBooks();

produce un risultato che non è esattamente ciò che ci si aspetterebbe:

La ragione sta nel fatto che, essendo Book un tipo complesso, è necessario quantomeno fornire alla ListBox indicazione di quale proprietà visualizzare:

<ListBox x:Name="lstBooks" Margin="10" Width="300" DisplayMemberPath="Title" />

Lo snippet di codice precedente mostra l'elenco dei titoli dei Book presenti in lista, rendendo decisamente più comprensibile il dato visualizzato:

La vera peculiarità di Silverlight consiste, però, nella possibilità di personalizzare a totale piacimento il template del singolo elemento, come mostrato nel codice XAML seguente:

<ListBox x:Name="lstBooksFancy" Margin="10"> 
    <ListBox.ItemTemplate> 
        <DataTemplate> 
            <StackPanel Orientation="Horizontal" Margin="5"> 
                <Image Source="{Binding ImageUrl}" Width="60" Height="60" /> 
                <StackPanel Margin="5"> 
                    <TextBlock FontWeight="Bold" FontSize="12" Text="{Binding Title}" /> 
                    <TextBlock FontStyle="Italic" FontSize="9" Text="{Binding Author}" /> 
                </StackPanel> 
            </StackPanel> 
        </DataTemplate> 
    </ListBox.ItemTemplate> 
</ListBox> 

In questo caso si è scelto di assegnare alla proprietà ItemTemplate una struttura personalizzata, costituita da diversi oggetti, collegati tramite Binding (si noti l'utilizzo della markup extension) con il singolo elemento, ossia un'istanza della classe Book. Nella fattispecie, sono state utilizzati un controllo Image per l'immagine di copertina e due TextBlock contenenti rispettivamente il titolo e l'autore, organizzando il layout tramite due StackPanel. Il risultato grafico, senza cambiare nulla nel codice C#, è decisamente più professionale!

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.

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

TUTORIALS


IN EVIDENZA
MISC