2010-02-08 26 views
14

Tengo la siguiente lista de vista, pero no muestra los registros reales, sino solo el espacio de nombres del objeto. Me pregunté si necesito crear las columnas en XAML para que muestren los registros y luego vincularlo a algunas propiedades de un objeto o qué está mal con esto.WPF Listview vinculante a ItemSource?

<ListView 
      Name="ListCustomers" 
      ItemsSource="{Binding Path=ListOfCustomers}" 
      SelectedItem="{Binding Path=SelectedCustomer}" 
      SelectionMode="Single" 
      IsSynchronizedWithCurrentItem="True" 
      HorizontalAlignment="Stretch" 
      VerticalAlignment="Stretch" 
      MinHeight="100" 

      ></ListView> 

ListOfCustomers es un tipo de ObservableCollection<Customer>. Los clientes reales sí se cargan en ObservableCollection, pero no se muestran. ¿Lo que falta?

Respuesta

35

Es necesario seleccionar las columnas que se muestran así:

<ListView ItemsSource="{Binding ListOfCustomers}" 
      SelectedItem="{Binding Path=SelectedCustomer}" 
      ....> 
    <ListView.View> 
    <GridView> 
     <GridViewColumn Width="140" Header="First Name" 
     DisplayMemberBinding="{Binding FirstName}" /> 
     <GridViewColumn Width="140" Header="Last Name" 
     DisplayMemberBinding="{Binding LastName}" /> 
     <GridViewColumn Width="140" Header="Email Address" 
     DisplayMemberBinding="{Binding Email}" /> 
     .... 
    </GridView> 
    </ListView.View> 
</ListView> 
0

¿Es porque no ha configurado la propiedad DataContext de ListView con la instancia que expone la propiedad ListOfCustomers (que devuelve la lista de elementos que se mostrarán)?

+0

he puesto el contexto de datos de la ventana a la clase que contiene la propiedad, ¿no debería ser suficiente? –

+0

@Tony - sí debería ser. Debería burbujear para encontrar el contexto de datos. Parece que lo tienes resuelto de la respuesta acc. ¿Cual fue el problema? – Gishu

+0

El problema fue que no tenía columnas creadas en mi lista de vista que estén vinculadas a mi clase Cliente. –

4

También puede probar

<ListView 
. 
. 
ItemTemplate="{StaticResource CustomerDataTemplate}" 
. 
. 
/> 

donde CustomerDataTemplate es un DataTemplate para la clase de cliente ...