Pourquoi mon WPF contraignant fonctionne pas?
-
20-09-2019 - |
Question
J'essaie de lier la liste à Listbox. Et la méthode Button1Click nouvelle instance de MyClass ajoute dans ma liste <>, mais pas visible dans ma zone de liste. Il mon 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;
}
}
Il est mon épisode de forme et 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",
});
}
Qu'est-ce que je fais mal?
La solution
Vous devez utiliser ObservableCollection<Node>
au lieu de List<Node>
. ObservableCollection est une collection de données dynamiques génériques qui fournit des notifications (à l'aide d'une interface « INotifyCollectionChanged
») lorsque des éléments sont ajoutés, supprimés, ou lorsque toute la collection est actualisée. Liste n'implémente INotifyCollectionChanged
, l'interface utilisée par WPF ListBox mettre à jour l'interface utilisateur.
voir
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow