Pergunta

Estou tentando vincular a lista à ListBox. E no método Button1Click, a nova instância do MyClass adiciona na minha lista <>, mas isso não é visível na minha caixa de listagem. Lá meu código:

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

É o meu episódio de forma e 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",
                            });
}

O que eu faço de errado?

Foi útil?

Solução

Você deveria usar ObservableCollection<Node> ao invés de List<Node>. ObservableCollection é uma coleção de dados dinâmicos genéricos que fornece notificações (usando uma interface "INotifyCollectionChanged") Quando os itens são adicionados, removidos ou quando toda a coleção é atualizada. A lista não implementa INotifyCollectionChanged, cuja interface é usada pelo WPF ListBox para atualizar a interface do usuário.

Vejo

  1. ObservableCollection <(de <(t>)>) classe
  2. Uma introdução ao ObservableCollection no WPF
  3. Lista vs ObservableCollection vs InotifyPropertyChanged em Silverlight
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top