На моей главной странице используется TabbedPage
, чтобы сгруппировать существующие новости в разные списки. Вкладки не зафиксированы; они построены на основе операций привязки данных к коллекции, которая повторяется через вызов веб-службы.
Я хотел бы сохранить выбранную вкладку при перезапуске активности, но мне кажется, что я что-то упускаю. Поскольку нет свойства selected tab (которое можно установить с помощью привязки данных), я попытался обработать события PageChanged
и CurrentPageChangedCommand
. Я использую PageChanged
для установки выбранной вкладки на предыдущую выбранную вкладку, а CurrentPageChangedCommand
используется для обновления сохраненной выбранной вкладки (я использую Application.Properties
, чтобы убедиться, что выбранная вкладка сохраняется после перезапуска приложения).
К сожалению, события, генерируемые этой вкладкой, всегда устанавливают вкладку 0 как выбранную! Вот что я вижу (предположим, что мое приложение было убито, активна белая вкладка 3):
- Когда данные привязаны к свойству
TabbedPage.ItemsSource
, вкладка автоматически запускаетCurrentPageChangedCommand
, передавая первую вкладку (вкладка в позиции 0). - Мой код обрабатывает событие и обновляет текущую сохраняемую выбранную вкладку, изменяя выбранную вкладку в словаре
Properties
. Итак, теперь вместо 3 (это значение сохранялось, когда мое приложение было убито), у него будет 0. - Затем вкладка запустит
PagesChanged
- Когда мой код обрабатывает это событие, он попытается обновить выбранную вкладку. Однако, когда он обращается к выбранной вкладке из словаря
Properties
, он получает вкладку по умолчанию (0), а не 3. Это происходит потому, чтоCurrentPageChangedCommand
был запущен до событияPagesChanged
(шаг 2), полностью переопределив ранее сохраненный индекс вкладки.
Это поведение по умолчанию также ухудшит работу пользователя, когда пользователь обновит текущий список (потяните, чтобы обновить), потому что он всегда видит список табуляции 0.
Итак, есть какие-нибудь подсказки о том, как решить эту проблему? Как вы, ребята, это решили?
Спасибо.