Это действительно зависит от того, что вы хотите сделать с этой информацией. Например, если вы пытаетесь отобразить список альбомов / категорий и т. Д., Один из способов смоделировать это будет
- Имеют один или несколько классов, которые реализуют интерфейс INotifyPropertyChanged и используются в качестве источников данных для ваших представлений (для примера посмотрите файлы в папке Models в новом PhoneListApplication)
- Запустите асинхронную операцию для входа в систему и получения токена, попросите функцию обратного вызова асинхронного метода сохранить токен для вас и вызовите функцию, которая запустит асинхронную операцию для получения списка альбомов и категорий.
- Обратный вызов для асинхронной операции для получения списка альбомов / категорий может обновлять ObservableList (путем добавления элементов к нему). Я полагаю, у вас есть один класс для альбомов и категорий, каждый с заметным списком. В любом случае, как только вы закончите добавление, просто вызовите NotifyPropertyChanged с именем свойства, которое вы изменили, и ваши данные должны появиться.
Существует очевидная проблема со случаями, когда вы хотите подождать, а не продолжать, пока не получите что-то обратно по сети (например, если вы хотите сохранить страницу входа в систему до тех пор, пока не узнаете, что успешно прошли аутентификацию). В этом случае вы можете просто изменить страницу в асинхронном обратном вызове.
Очевидно, что вы могли бы сделать что-то более причудливое и получить поток, ожидающий событие, установленное асинхронным обратным вызовом. Я рекомендую не делать этого в потоке пользовательского интерфейса, поскольку он ограничивает ваши возможности, такие как тайм-ауты, и, как правило, очень грязный.