Perchè il mio WPF vincolante non funziona?
-
20-09-2019 - |
Domanda
I cercando di legare List per Listbox. E al metodo di Button1Click nuova istanza di MyClass aggiunge nella mia lista <>, ma che non visibile nella mia casella di riepilogo. C'è il mio codice:
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;
}
}
E 'il mio episodio 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",
});
}
Quello che ho fatto di sbagliato?
Soluzione
Si dovrebbe usare ObservableCollection<Node>
invece di List<Node>
. ObservableCollection è una raccolta di dati dinamici generico che fornisce notifiche (utilizzando un'interfaccia "INotifyCollectionChanged
") quando vengono aggiunti elementi, rimossi, o quando l'intera collezione viene aggiornata. Elenco non implementa INotifyCollectionChanged
, quale interfaccia è utilizzata per WPF ListBox aggiornare UI.
vedere
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow