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