2012-05-18 4 views
6

У меня возникает огромное количество проблем с правильной привязкой данных. Я прочитал большинство сообщений здесь от людей с похожими проблемами, но по какой-то причине я просто не могу заставить его щелкнуть.Привязать ObservableCollection к ListView

XML, для моей таблицы:

<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> 

В моем коде у меня есть:

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; } 

} 

В попытке обновить таблицу, я использую:

_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() 
}); 

новые предметы похоже, правильно добавляются, но ничего не обновляется в listView.

Я прочитал учебники, как это: http://www.switchonthecode.com/tutorials/wpf-tutorial-using-the-listview-part-1

И я попытался добавить весь код уведомления, которое предложено в других постах. Ничто не работает для меня.

И идеи будут оценены.

+0

Вы проверили окно вывода в VS во время выполнения? Существуют ли какие-либо ошибки привязки? Где вы устанавливаете 'DataContext' для всего представления? – nemesv

+0

О, это DataContext = "{Binding RelativeSource = {RelativeSource Self}}" в теге . –

ответ

13

Вместо DataContext="{Binding DocumentList}" попробуйте ItemsSource="{Binding DocumentList}".

+0

Это в сочетании с DataContext, отсутствующим в теге , который воспитывал @nemesv, решил это. Благодарю. –

+0

Наверх-проголосовать за его ответ и принять его, @NathanTornquist. Здесь мы любим нашу беседу в Павлове. – Yatrix

+0

Это еще не позволило мне принять его. Он ответил слишком быстро. Не волнуйся, я позаботился об этом. –

Смежные вопросы