Ho un po 'di codice che legge una risposta JSON da un server HTTP, quindi analizza questo e inserisce i dati in un controllo ListBox
.Associazione di dati con una listbox
L'evento sparo quando il download è completato è il seguente:
void webClient_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
{
DataContractJsonSerializer ser = null;
try
{
ser =
new DataContractJsonSerializer(typeof(ObservableCollection<UserLeaderboards>));
ObservableCollection<UserLeaderboards> users =
ser.ReadObject(e.Result) as ObservableCollection<UserLeaderboards>;
foreach (UserLeaderboards em in users)
{
int Fid = em.id;
string Fusername = em.username;
int Fscore = em.score;
lstbLeaders.Items.Add(Fid + Fusername + Fscore);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
Ora, quando faccio il items.add
presumo che è solo unendo le 3 variabili e l'aggiunta di una colonna nella ListBox
. Funziona bene e vedo tutti e 3 gli articoli unificati e visualizzati.
Voglio separare questo e renderlo un po 'più bello, quindi ho creato un po' di XAML
per provare e associare le variabili ai blocchi di testo. Quello che segue è solo il nome utente vincolante. Ho anche una classe pubblica che ottiene/imposta tutte e 3 le variabili.
<ListBox Height="346" HorizontalAlignment="Left" Margin="5,221,0,0"
Name="lstbLeaders" VerticalAlignment="Top" Width="446">
<DataTemplate>
<TextBlock Text="{Binding Source=Fusername}" />
</DataTemplate>
</ListBox>
Quando si esegue quanto sopra, non viene visualizzato nulla. Ho la sensazione che sia qualcosa di semplice?
Grazie.
non c'è motivo per non legare direttamente alla listbox, la mia conoscenza non è molto alta sul lato XAML delle cose. Ho modificato il mio progetto con un semplice lstbLeaders.ItemsSource = utenti; Mantenere la classe userview secondo il tuo post. Ora ottengo solo 00 su ogni riga. – Nathan
Che aspetto ha XAML? Controllare (usando il debugger) se i valori delle collezioni sono impostati o se la deserializzazione introduce un errore. Ho aggiunto un nuovo snippet di codice alla mia risposta adattando il tuo codice. Il tuo XAML dovrà legarsi alle proprietà della classe 'UserLeaderboards' ora:' id', 'username',' score'. – Zebi
questo è stato risolto, grazie per il vostro aiuto !! – Nathan