Pregunta

Deseo tener un Control de usuario que tome una colección de Personas (propiedad " Datos ") y los muestre en un cuadro de lista. Cuando ejecuto mi aplicación, no se muestra nada en el cuadro de lista. ¿Puede indicarme qué estoy haciendo mal? Gracias !!!

public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
    public override string ToString()
    {
        return Name + "(" + Age + ")";
    }
}

Control de usuario: (uc1.xaml.cs)

public partial class uc1
{
    public static readonly DependencyProperty DataProperty = DependencyProperty.Register("Data", typeof (List<Person>), typeof (uc1));

    public List<Person> Data
    {
        get { return (List<Person>) GetValue(DataProperty); }
        set { SetValue(DataProperty, value); }
    }

    public uc1()
    {
        InitializeComponent();
    }

    private void UserControl_Loaded(object sender, RoutedEventArgs e)
    {
        DataContext = Data;
    }
}

(uc1.xaml)

<ListBox ItemsSource="{Binding Name}" />
¿Fue útil?

Solución

La propiedad ItemsSource controla la lista de elementos que se muestran en el cuadro de lista. Si desea que ListBox muestre una línea para cada persona, debe configurar ItemsSource para que se una directamente al DataContext. Luego, usa la propiedad DisplayMemberPath para controlar qué propiedad de la clase Person mostrar.

Aquí está mi código de muestra que funciona para mí. La clase de persona es la misma.

La ventana1.xaml.cs:

public partial class Window1 : Window
{
    public Window1()
    {
        InitializeComponent();
        List<Person> Data = new List<Person>();
        Data.Add(new Person { Name = "Test 1", Age = 5 });
        Data.Add(new Person { Name = "Test 2", Age = 10 });
        this.DataContext = Data;
    }
}

La ventana1.xaml

<ListBox ItemsSource="{Binding}" DisplayMemberPath="Name" />
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top