6. Associare i dati alla ListView
Ora comincia il bello.
Premete F5 e magicamente il programma si avvierà, correggete errori se ce ne sono ma credo che non ve ne siano.
Ora chiudete l'applicazione appena eseguita e selezionate il controllo ListView facendo doppioclick su esso dal pannello "Object and TimeLine" in modo tale che vi si evidenzi in giallo.
A questo punto cliccate con il pulsante destro sul controllo nel form e scegliete la voce "BindItemSourceToData" dal menu contestuale.
Premete sul pulsante "+ CLR" che trovate nella finestra che si è appena aperta e cliccate su "MyLinqToSQLDataContext" che dovreste avere nella lista (io avevo chiamato il file delle classi linq così: MyLinqToSQL.dmbl per cui il mio datacontext si chiama MyLinqToSQLDataContext)
Premete su "OK" e il datacontext verrà aggiunto alle connessioni "Data Sources", cliccateci sopra e vi apparirà nella colonna di destra, l'elenco degli oggetti che implementano l'interfaccia IObservableCollection (e qui non sono proprio sicuro, quindi la butto là così come mi viene e prendetela con beneficio di inventario) tra cui la classe "Tipis (Array):(Table Tipi)"
Selezionatela e premete Finish.
Sembra che non sia cambiato niente ma in realtà abbiamo appena detto che il compilatore XAML deve creare un'istanza di Tipis perché la ListView la deve usare come DataSource ed abbiamo detto alla ListView di usare quell'istanza come DataSource per i suoi DataItem.
passate dalla visualizzazione Design a quella XML, il Codice XAML ora è il seguente:
Ora bisogna dire alle colonne quale valore prendere:
Qui il mio consiglio è di farlo a mano:
<GridViewColumn Header="Codice" DisplayMemberBinding="{Binding Path=TipoCodice}"/>
<GridViewColumn Header="Descrizione" DisplayMemberBinding="{Binding Path=TipoDescrizione}"/>
Purtroppo Expression Blend non ha intellisense e quello di VS si spegne proprio nel Binding per cui dovete sapere come si chiamano le colonne della tabella, le mie si chiamano TipoCodice e TipoDescrizione.
ora compilate ed eseguite premendo F5. se avete messo dei valori di prova nella tabella dovreste vederli nella listview.
Tutto questo ancora una volta senza scrivere nessuna riga di codice se non per effettuare il Binding alle colonne. spero che questa limitazione venga al piu presto sorpassata (io sto utilizzando VS2008 SP1 e Blend 2.5 March CTP).
Con questo abbiamo chiuso la Lezione 2, arrivederci alla prossima lezione dove vedremo come permettere la modifica dei valori direttamente da listview.
Vi lascio in allegato lo screenshot di quello che è venuto fuori.