2012-05-18 18 views
6

Mam ogromny problem z poprawnym powiązaniem danych. Przeczytałem większość postów od osób z podobnymi problemami, ale z jakiegoś powodu po prostu nie mogę tego kliknąć.Powiąż obiekt ObservableCollection z ListView

XML do mojego stolika wynosi:

<Window ... DataContext="{Binding RelativeSource={RelativeSource Self}}" > 
... 
<ListView Height="124" HorizontalAlignment="Left" Margin="12,46,0,0" Name="listViewDocuments" VerticalAlignment="Top" Width="Auto" DataContext="{Binding DocumentList}"> 
    <ListView.View> 
     <GridView> 
      <GridViewColumn Width="160" Header="Description" DisplayMemberBinding="{Binding Description}"/> 
      <GridViewColumn Width="160" Header="Date Filed" DisplayMemberBinding="{Binding DateFiled}"/> 
      <GridViewColumn Width="160" Header="Filed By" DisplayMemberBinding="{Binding UserFiledName}"/> 
      <GridViewColumn Width="150" Header="Page" DisplayMemberBinding="{Binding Pages}"/> 
      <GridViewColumn Width="150" Header="Notes" DisplayMemberBinding="{Binding Notes}"/> 
      <GridViewColumn Width="Auto" Header="" /> 
     </GridView> 
    </ListView.View> 
</ListView> 

ciągu mojego kodu mam:

public ObservableCollection<Document> _DocumentList = new ObservableCollection<Document>(); 

... 

public ObservableCollection<Document> DocumentList{ get { return _DocumentList; } } 

... 

public class Document 
{ 
    public string Description { get; set; } 
    public string DateFiled { get; set; } 
    public string UserFiledName { get; set; } 
    public string Pages { get; set; } 
    public string Notes { get; set; } 
    public string Tag { get; set; } 

} 

W próbie aktualizacji tabeli używać:

_DocumentList.Add(new Document 
{ 
    Description = dr["Description"].ToString(), 
    DateFiled = dr.GetDateTime(dr.GetOrdinal("DateFiled")).ToShortDateString(), 
    UserFiledName = dr["UserFiledName"].ToString(), 
    Pages = dr.GetInt32(dr.GetOrdinal("Pages")).ToString(), 
    Notes = dr["Notes"].ToString(), 
    Tag = dr["FileID"].ToString() 
}); 

nowe przedmioty wydają się być poprawnie dodane, ale nic nie jest aktualizowane na liście.

Czytałem przez tutoriali tak: http://www.switchonthecode.com/tutorials/wpf-tutorial-using-the-listview-part-1

i próbowałem dodać cały kod powiadomień, które są sugerowane w innych postach. Nic dla mnie nie działa.

Pomysły zostaną docenione.

+0

Czy sprawdziłeś okno Output w VS podczas uruchamiania? Czy są jakieś błędy wiążące? Gdzie ustawiasz "DataContext" dla całego widoku? – nemesv

+0

Och, to DataContext = "{Binding RelativeSource = {RelativeSource Self}}" w tagu . –

Odpowiedz

13

Zamiast DataContext="{Binding DocumentList}" spróbuj ItemsSource="{Binding DocumentList}".

+0

To, że w połączeniu z DataContext brakuje w tagu , który przyniósł rozwiązanie @neesv. Dzięki. –

+0

Podnieś głosującą odpowiedź i zaakceptuj ją, @NathanTornquist. Uwielbiamy nasze Pawłowe opinie tutaj. – Yatrix

+0

Nie pozwoliłoby mi to jeszcze zaakceptować. Odpowiedział zbyt szybko. Nie martw się jednak, zająłem się tym. –

Powiązane problemy