アプリに LongListSelector を含むページがあります。また、主にいくつかの文字列を保持するカスタム クラスである streamItem のアイテムを含む ObservableCollection もあります。ページの読み込み時に、LongListSelector の ItemsSource を ObservableCollection に設定しました。LongListSelector は、データ バインディングが適切に機能して、期待どおりに streamItems を表示するようになりました。
しかし、今度は streamItem を更新したいと思います。たとえば、これらの項目の 1 つの文字列を変更したいとします。データ バインディングのおかげで、この変更がすぐに LongListSelector に反映されることを期待していますが、そうはなりません。
ItemsSource で何かを変更するとすぐに LongListSelector を更新するにはどうすればよいですか? これが私が使用しているコードの凝縮されたセットです。
streamItem クラス:
Public Class streamItem
Public Property headerText As String
Public Property msgText As String
End Class
ObservableCollection である変数 tableData の宣言:
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 にこの変更が反映されると思っていましたが、何も起こりません。これを修正するにはどうすればよいですか? 前もって感謝します。