Извините, если это повторяющийся вопрос. Есть довольно много вопросов по этой теме, но я не могу понять это. Я пытаюсь привязать список к ObservableCollection и обновлять список при добавлении элементов в коллекцию.
У меня есть класс с именем CollectionOfBlogs:
Public Class CollectionOfBlogs
Implements INotifyPropertyChanged
Public Event PropertyChanged As PropertyChangedEventHandler _
Implements INotifyPropertyChanged.PropertyChanged
Public Sub New(ByVal name As String)
Me.FullName = name
End Sub
Private _FullName As String
Public Property FullName() As String
Get
Return _FullName
End Get
Set(ByVal value As String)
_FullName = value
NotifyPropertyChanged("FullName")
End Set
End Property
Public Sub NotifyPropertyChanged(ByVal propertyName As String)
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
End Sub
End Class
Затем другой класс, где я настраиваю ObservableCollection CollectionOfBlogs (выше) и подпрограмму для добавления элементов в коллекцию:
Public Class ITRSBlogs
Public blogNamesList As New ObservableCollection(Of CollectionOfBlogs)
Public Sub addBlog(ByVal FullName as String)
blogNamesList.Add(New CollectionOfBlogs(FullName))
End Sub
End Class
Я связываю список со списком blogNamesList в классе ITRSBlogs (выше) из события моей главной страницы:
Dim blogClass As New ITRSBlogs
Me.BloggingMenuListBox.ItemsSource = blogClass.blogNamesList
Вот XAML моего списка. Это связано в коде, а не в XAML (просто подумал, что я должен упомянуть об этом).
<ListBox Name="BloggingMenuListBox"/>
Перед привязкой коллекции к списку я загружаю коллекцию с элементами из базы данных, и они отображаются в списке просто отлично. Эти 2 подпрограммы, приведенные ниже, на самом деле также относятся к классу ITRSBlogs, и я вызываю FillBlogLists из события загрузки моих страниц.
Public Sub FillBlogLists()
Dim query = theContext.GetBlogsOrderedByNameQuery
theContext.Load(query, AddressOf OnBlogsLoaded, Nothing)
End Sub
Private Sub OnBlogsLoaded(ByVal lo As LoadOperation(Of Blog))
blogList.Clear()
For Each s In lo.AllEntities
blogList.Add(CType(s, Blog))
Next
For Each item In blogList
blogNamesList.Add(New CollectionOfBlogs(item.FullName))
Next
End Sub
Помимо этого, у меня есть простое текстовое поле и кнопка на странице. Когда имя вводится в текстовое поле и нажимается кнопка, я вызываю подпрограмму addBlog (передавая имя из текстового поля) в классе ITRSBlogs (немного резервирую страницу), чтобы добавить элемент в коллекцию.
Проблема в том, что когда я добавляю элемент в коллекцию, список не обновляется. Я новичок в Observable Collections (и многих других вещах :), так что, возможно, я просто действительно здесь. Может кто-нибудь сказать мне, что я делаю не так?