¿Cómo vincular elementos del cuadro de lista usando la colección observable en wp7?

Mi código:

 ObservableCollection<SampleCheckedData> interestrates = new ObservableCollection<SampleCheckedData>();
 XDocument xmlDocu = XDocument.Load(new MemoryStream(System.Text.UTF8Encoding.UTF8.GetBytes(result)));

                interestrates = (from rts in xmlDocu.Descendants("Friend")

                                 select new SampleCheckedData
                                 {

                                     Id = (string)rts.Element("userid"),
                                     Name = (string)rts.Element("name"),
                                     Icon = (string)rts.Element("imageurl"),
                                     VisibleStatus = (string)rts.Element("visiblestatus"),
                                     AppStatus = (string)rts.Element("loginstatus"),

                                     imgBubble =bitmapRed,
                                 }).ToList<SampleCheckedData>();

Luego, obtener un error no puede convertir implícitamente system.collection.generic.list en system.collection.observablecollection de esa manera. ¿Cómo vincular elementos del cuadro de lista usando la colección observable?

EDIT:

Button b = sender as Button;
                    var res = interestrates.Where(a => a.Id.Equals(((System.Windows.FrameworkElement)(e.OriginalSource)).Tag)).ToList();
                    if (res.Count == 1)
                        interestrates.Remove(res.First());
                    interestrates = new ObservableCollection<SampleCheckedData>();
                    lstFriendRequuest.ItemsSource = "";
                    bindGetFriends();

Aquí eliminando con éxito el elemento de la lista, pero después de llamar a bindGetFriends () para vincular los elementos nuevamente, entonces no obtengo elementos nuevos que obtienen elementos antiguos. ¿Por qué el servicio devuelve la lista de elementos antiguos?

preguntado el 12 de junio de 12 a las 11:06

2 Respuestas

Utilice esta extensión:

using System;
using System.Collections.Generic;
using System.Collections.ObjectModel;

public static class Extensions
{
    public static ObservableCollection<T> ToObservableCollection<T>(this IEnumerable<T> collection)
    {
        var observableCollection = new ObservableCollection<T>();
        foreach (var item in collection) observableCollection.Add(item);
        return observableCollection;
    }
}

Uso:

interestrates = (from rts in xmlDocu.Descendants("Friend") 
    select new SampleCheckedData
    {    
        Id = (string)rts.Element("userid"),
        Name = (string)rts.Element("name"),
        Icon = (string)rts.Element("imageurl"),
        VisibleStatus = (string)rts.Element("visiblestatus"),
        AppStatus = (string)rts.Element("loginstatus"),    
        imgBubble =bitmapRed,
    }).ToObservableCollection<SampleCheckedData>();

Respondido el 12 de junio de 12 a las 11:06

dar error ToObservableCollection no contiene una definición para ello. - WP7

agregué la clase estática anterior pero arrojé un error porque no contaba con ToObservableCollection - WP7

Los códigos publicados se denominan "método de extensión" y deben estar disponibles donde desee usarlos. Asegúrate de no perderte un "uso" - dominik kirschenhofer

¿Por qué el cuadro de lista no actualiza los elementos? Por favor, dígame... compruebe mi código de edición. - WP7

Cambie su colección Observable a Lista,

List<SampleCheckedData> interestrates = new List<SampleCheckedData>();

También puede vincular List a ListBox, en lugar de ObservableCollection

Y para resolver su otro problema de eliminar el elemento seleccionado del cuadro de lista, intente con el siguiente código:

 var selectedIndex = listbox.SelectedIndex;
 var listItems = listbox.ItemsSource as List<SampleCheckedData>;
 listItems.RemoveAt(selectedIndex);
 listbox.ItemsSource = null;
 listbox.ItemsSource = listItems;

Si todavía tiene problemas, hágamelo saber

Respondido el 12 de junio de 12 a las 11:06

Al usar el cuadro de lista, me enfrento a que el cuadro de lista no se actualiza cuando se elimina el elemento de ese cuadro de lista, por lo que se usa una colección observable. - WP7

¿Cómo vincular elementos del cuadro de lista usando una colección observable? - WP7

listItems.RemoveAt(selectedIndex);obteniendo error de índice de parámetro. - WP7

¿Cuál es el mensaje de error exacto que está recibiendo? En la depuración, intente averiguar si el valor del índice seleccionado es correcto o no: nkchandra

obteniendo el valor del índice seleccionado como -1. - WP7

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.