Почему мой WPF переплет не работает? - PullRequest
2 голосов
/ 15 февраля 2010

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

       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",
                            });
}

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

1 Ответ

3 голосов
/ 15 февраля 2010

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

см

  1. ObservableCollection <(Of <(T>)>) Класс
  2. Введение в ObservableCollection в WPF
  3. Список против ObservableCollection против INotifyPropertyChanged в Silverlight
...