2010-02-08 22 views
14

Ich habe die folgende Listview, aber es zeigt nicht die tatsächlichen Datensätze, sondern nur den Namespace des Objekts. Ich fragte mich, ob ich die Spalten in XAML erstellen muss, damit die Datensätze angezeigt werden und sie dann an einige Eigenschaften eines Objekts gebunden werden, oder was ist daran falsch?WPF Listview Bindung an ItemSource?

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

      ></ListView> 

ListOfCustomers ist ein ObservableCollection<Customer> Typ. Die tatsächlichen Kunden werden zwar in die ObservableCollection geladen, aber sie werden nicht angezeigt. Was fehlt?

Antwort

35

Sie müssen die Spalten auszuwählen und anzuzeigen:

<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

Liegt das daran, dass Sie die DataContext-Eigenschaft von ListView nicht mit der Instanz festgelegt haben, die die ListOfCustomers-Eigenschaft verfügbar macht (die die Liste der anzuzeigenden Elemente zurückgibt)?

+0

ich gesetzt haben Der Datenkontext des Fensters zu der Klasse, die die Eigenschaft enthält, sollte das nicht genug sein? –

+0

@Tony - ja sollte sein. Es sollte aufblühen, um den Datenkontext zu finden. Scheint, dass du es von der acc Antwort gelöst hast. Was war das Problem? – Gishu

+0

Problem war, dass ich in meinem Listview keine Spalten erstellt hatte, die an meine Customer-Klasse gebunden sind. –

4

Sie auch

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

versuchen könnte, wo CustomerDataTemplate ein Datatemplate für Customer-Klasse ist ...