2010-02-15 3 views
2

Я пытаюсь связать Список со списком. И при методе Button1Click новый экземпляр MyClass добавляет в мой список <>, но это не видно в моем списке. Там мой код:Почему моя привязка WPF не работает?

 public static class NotesEngine 
      { 
       public static List<Note> All; 

       static NotesEngine() 
       { 
        All = new List<Note> 
           { 
            new Note 
             { 
              Content = "test1", 
             } 
           }; 
       } 

       public static List<Note> GetNotes() 
       { 
        return All; 
       } 
} 

Это моя форма эпизод и ObjectDataProvider:

<ObjectDataProvider ObjectType="{x:Type NotesEngine}" x:Key="NotesList" MethodName="GetNotes"/> 

...... 

<TabItem Header="test" DataContext="{Binding Source={StaticResource NotesList}}"> 

       <ListBox HorizontalAlignment="Stretch" VerticalAlignment="Stretch" 
         ItemTemplate="{StaticResource NotesListBoxDataTemplate}" 
         ItemsSource="{Binding }"> 
       </ListBox> 
</TabItem> 

private void button2_Click(object sender, RoutedEventArgs e) 
{ 
    NotesEngine.All.Add(new Note 
          { 
           Content = "xx", 
           Images = new List<string>(), 
           LastEdit = DateTime.Now, 
           Title = "XASAC", 
          }); 
} 

Что я делаю не так?

ответ

3

Вы должны использовать ObservableCollection<Node> вместо List<Node>. ObservableCollection - общий динамический набор данных, который предоставляет уведомления (с использованием интерфейса «INotifyCollectionChanged»), когда элементы становятся добавленными, удалены или когда вся коллекция обновляется. Список не реализует INotifyCollectionChanged, интерфейс которого используется WPF ListBox для обновления интерфейса.

см

  1. ObservableCollection<(Of <(T>)>) Class
  2. An Introduction to ObservableCollection in WPF
  3. List vs ObservableCollection vs INotifyPropertyChanged in Silverlight
Смежные вопросы