Warum Bindung meine WPF nicht funktionieren?
-
20-09-2019 - |
Frage
ich versuche Liste Listbox zu binden. Und am Button1Click Methode neue Instanz von MyClass fügt in meiner Liste <>, aber das ist nicht sichtbar in meinem Listbox. Es mein Code:
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;
}
}
Es ist meine Form Folge und Object:
<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",
});
}
Was ich falsch gemacht?
Lösung
Sie sollten ObservableCollection<Node>
anstelle von List<Node>
. ObservableCollection ist eine allgemeine dynamische Datenerfassung, die Benachrichtigungen (unter Verwendung einer Schnittstelle „INotifyCollectionChanged
“) bereitstellt, wenn Elemente hinzugefügt bekommen, entfernt oder wenn die ganze Sammlung aufgefrischt wird. Liste nicht implementiert INotifyCollectionChanged
, die Schnittstelle von WPF ListBox Update UI verwendet wird.
sehen
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow