我的应用中有一个带有 LongListSelector 的页面。我还有一个 ObservableCollection,其中包含 streamItem 项,这是一个主要包含一些字符串的自定义类。页面加载后,我将 LongListSelector 的 ItemsSource 设置为 ObservableCollection。LongListSelector 现在将按预期显示 streamItems,数据绑定正常工作。
但是,现在我想更新一个streamItem。例如,我想更改其中一项中的字符串。由于数据绑定,我希望这种更改会立即反映在 LongListSelector 中,但它不会发生。
一旦我更改了它的 ItemsSource 中的某些内容,我该怎么做才能使 LongListSelector 更新?这是我正在使用的一组精简代码。
流项目类:
Public Class streamItem
Public Property headerText As String
Public Property msgText As String
End Class
变量tableData的声明,也就是ObservableCollection:
Public Shared tableData As New ObservableCollection(Of streamItem)
页面加载后,向 tableData 添加一个项目并设置 LongListSelector(其名称为 tblStream)的 ItemsSource:
Dim newItem As New App.streamItem
newItem.headerText ="Header"
newItem.msgText = "Some other text"
App.tableData.Add(newItem)
tblStream.ItemsSource = App.tableData
XAML 部分:
<phone:LongListSelector x:Name="tblStream">
<phone:LongListSelector.ItemTemplate>
<DataTemplate>
<StackPanel Margin="0" Orientation="Vertical">
<TextBlock Text="{Binding headerText}" />
<TextBlock Text="{Binding msgText}" />
</StackPanel>
</DataTemplate>
</phone:LongListSelector.ItemTemplate>
</phone:LongListSelector>
为了测试,我创建了一个按钮来执行此操作:
App.tableData.Item(0).msgText = "Text changed."
单击时,我希望 LongListSelector 反映此更改,但没有任何反应。我该如何解决?提前致谢。