Почему моя WPF привязка не работает?
Я пытаюсь привязать список к списку. И в методе Button1Click новый экземпляр MyClass добавляется в мой список<>, но это не видно в моем списке. Там мой код:
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;
}
}
Это мой эпизод формы и 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",
});
}
Что я делаю не так?
1 ответ
Решение
Вы должны использовать ObservableCollection<Node>
вместо List<Node>
, ObservableCollection - это общий динамический сбор данных, который предоставляет уведомления (используя интерфейс "INotifyCollectionChanged
") когда элементы добавляются, удаляются или обновляется вся коллекция. Список не реализует INotifyCollectionChanged
какой интерфейс используется WPF ListBox для обновления пользовательского интерфейса.
увидеть