Tengo un poco de código que lee una respuesta json de un servidor HTTP, luego lo analiza e inserta los datos en un control ListBox
.Enlace de datos con un cuadro de lista
El evento que disparan cuando se complete la descarga es la siguiente:
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);
}
}
Ahora, cuando hago la items.add
supongo que simplemente se unió a las 3 variables y agregarlo a una columna en la ListBox
. Esto funciona bien y veo los 3 elementos unidos y mostrados.
Quiero separar esto y hacer que se vea un poco mejor así que he creado algunos XAML
para tratar de vincular las variables a los bloques de texto. Lo siguiente es solo el enlace del nombre de usuario. También tengo una clase pública que obtiene/establece las 3 variables.
<ListBox Height="346" HorizontalAlignment="Left" Margin="5,221,0,0"
Name="lstbLeaders" VerticalAlignment="Top" Width="446">
<DataTemplate>
<TextBlock Text="{Binding Source=Fusername}" />
</DataTemplate>
</ListBox>
Al ejecutar lo anterior, no aparece nada en absoluto. Tengo la sensación de que es algo simple
Gracias.
no hay ninguna razón para que no se vincule directamente al listbox, Mi conocimiento no es muy alto del lado XAML de las cosas. He editado mi proyecto con un simple lstbLeaders.ItemsSource = users; Manteniendo la clase userview según tu publicación. Ahora obtengo 00 en cada línea. – Nathan
¿Cómo es tu XAML? Compruebe (utilizando el depurador) si los valores de las colecciones están configurados o si la deserialización introduce un error. Agregué un nuevo fragmento de código a mi respuesta para adaptar tu código. Su XAML tendrá que vincularse a las propiedades de la clase 'UserLeaderboards' ahora:' id', 'username',' score'. – Zebi
eso lo ha ordenado, gracias por su ayuda !! – Nathan