3

Windows Azure Mobile Services を使用して、Windows Phone 8 アプリでデータを保存および取得しています。これは少し複雑な問題なので、説明するために最善を尽くします。

まず、生のプッシュ通知を使用してメッセージを受信して​​います。メッセージを受信すると、アプリのリストボックスが更新されます。アプリを開くと、ページに移動しListBox、更新が正常に行われたプッシュ通知を受け取りListBoxます。戻るボタンを押して同じページに移動するとListBox、プッシュ通知が受信され、更新するコードがListBoxエラーなしで実行されますが、更新されListBoxません。両方のシナリオでハンドラーを使用して同じコードが実行されることを確認しましたが、2 番目のインスタンスで、[戻る] を押してから同じページに再度移動すると、正しくバインドされないOnNavigatedToようです。ListBox以下にいくつかのコード スニペットを示します。

MobileServiceCollection 宣言:

public class TodoItem
{
    public int Id { get; set; }

    [JsonProperty(PropertyName = "text")]
    public string Text { get; set; }

}

private MobileServiceCollection<ToDoItem, ToDoItem> TodoItems;
private IMobileServiceTable<TodoItem> todoTable = App.MobileService.GetTable<TodoItem>();

プッシュ通知受信ハンドラー:

void PushChannel_HttpNotificationReceived(object sender, HttpNotificationEventArgs e)
    {
        string message;

        using (System.IO.StreamReader reader = new System.IO.StreamReader(e.Notification.Body))
        {
            message = reader.ReadToEnd();
        }


        Dispatcher.BeginInvoke(() =>
          {

              var todoItem = new TodoItem
              {
                Text = message,
              };
              ToDoItems.Add(todoItem);

           }
    );

     }

私は使用してみました:

ListItems.UpdateLayout();

ListItems.ItemsSource = null;
ListItems.ItemsSource = ToDoItems; 

を追加する上記の手順のコードの前後ですが、ToDoItem役に立ちませんでした。

次のプロシージャがOnNavigatedToイベント ハンドラーで呼び出され、アイテム ソースとしてListboxと が割り当てられます。ToDoItems

private async void RefreshTodoItems()
    {       
        try
        {
            ToDoItems = await todoTable
                .ToCollectionAsync();
        }
        catch (MobileServiceInvalidOperationException e)
        {
            MessageBox.Show(e.Message, "Error loading items", MessageBoxButton.OK);
        }

        ListItems.ItemsSource = ToDoItems;                      

    }

上記の手順ですasyncが、通知を受け取る前に完了することを確認しました。それでも、上記のように、アプリを開くと、ListBox正常に更新されていることを示すページに移動します。もう一度押して同じページに移動すると、機能しません。アプリから戻って再度開き、 でページに移動すると、ListBox再び機能し、[戻る] を押してページを再度開くと失敗します。そのため、押して同じページに移動すると、正しくListBoxバインドされていないようです。ToDoItems

どんな助けでも感謝します。ありがとう。

4

1 に答える 1