Я, наконец, добрался до стартового телефона для Windows. Я еще не очень хорош в этом, но, надеюсь, вы, ребята, понимаете, что я хочу здесь сделать.WP7 - Обновление списка
Из того, что я узнал от других программистов, ObservableCollection можно обновить в режиме реального времени, пока он привязан к объекту, например, к списку. Все изменения в ObservableCollection приведут к тому, что пользовательский интерфейс объекта, к которому он привязан, обновит его элементы.
Так что я пытаюсь сделать, это загрузить файл с моего сервера, проанализировать его с помощью json, а затем обновить ObservableCollection с новыми данными. Тем не менее, веб-клиент, похоже, не загружает новые данные до тех пор, пока приложение не будет открыто!
Вот GIF, показывающий, как приложение работает в данный момент:
И вот мой код (срубить немного):
Dim aList As New ObservableCollection(Of classes.consoles)
Private Sub PhoneApplicationPage_Loaded(sender As System.Object, e As System.Windows.RoutedEventArgs) Handles MyBase.Loaded
checkforconsoles()
End Sub
Public Sub checkforconsoles()
Dim wc As New WebClient()
AddHandler wc.DownloadStringCompleted, AddressOf downloaded
wc.DownloadStringAsync(New Uri("http://localhost/api/?function=GetConsolesForUser&userid=" & id))
End Sub
Private Sub downloaded(sender As Object, e As DownloadStringCompletedEventArgs)
aList.Clear()
'MessageBox.Show(e.Result)
Dim o As JObject = JObject.Parse(e.Result)
Dim jarray As JArray = DirectCast(o("results"), JArray)
Try
Dim i As Integer = jarray.Count()
For i = 0 To jarray.Count() - 1 Step 1
Dim id As String = jarray(i)("id").ToString
Dim name As String = jarray(i)("name").ToString
Dim image As String = jarray(i)("image").ToString
MessageBox.Show(name)
Dim c As classes.consoles = New classes.consoles()
c.categoryimage = New Uri(image)
c.categoryname = name
c.categoryid = id
aList.Add(c)
Next
listBoxview.ItemsSource = aList
StackPanel1.Visibility = Windows.Visibility.Collapsed
StackPanel2.Visibility = Windows.Visibility.Visible
Catch ex As Exception
StackPanel2.Visibility = Windows.Visibility.Collapsed
StackPanel1.Visibility = Windows.Visibility.Visible
End Try
End Sub
Private Sub ApplicationBarIconButton_Click_1(sender As System.Object, e As System.EventArgs)
checkforconsoles()
End Sub
Кто-нибудь есть какие-либо понятия, что случилось ? :(
Заранее спасибо.
это может быть кэширование проблемы Попробуйте это:.. 'wc.DownloadStringAsync (New Uri («http: // localhost/api /? function = GetConsolesForUser & userid =" & id & "& random =" + Guid.NewGuid(). ToString())) ' – keyboardP
определенно кажется проблемой кэширования –
Что такое код для добавления нового элемента? Ваше приложение ApplicationBarIconButton_Click (я предполагаю) –