Por que minha ligação do WPF não funciona?
-
20-09-2019 - |
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?
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
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow