Страница входа с использованием Mvvmcross

1

Я пишу приложение для Android, iPhone, WinRT и WinPhone, которое требует, чтобы пользователь сначала заходил в систему (они могут сохранять свои учетные данные, поэтому этот шаг, возможно, необходимо будет пропустить после первого входа).

Я знаю, что могу зарегистрировать модель просмотра входа в качестве начальной страницы, но тогда мне нужно будет удалить ее из заднего стека, когда пользователь завершит вход, чтобы предотвратить возврат к ней.

Поэтому вместо этого я решил, что перейду к FirstVM, и если теперь есть кэшированные учетные данные, я перейду к виртуальной машине входа. LoginVM просто вызовет закрытие и будет использовать сообщение, чтобы сообщить FirstVM, что оно может продолжаться как обычно.

Я делаю первоначальную реализацию в качестве приложения WinRT, и две проблемы, которые у меня есть со вторым вариантом:

  1. Похоже, что нет хорошего события, которое можно было бы использовать для перехода к виртуальной машине входа в систему из FirstMV. Старт будет очевидным выбором, но это не позволит навигации, поэтому мне пришлось сделать следующее:

    public async override void Start()
    {
        base.Start();
        await Task.Delay(1);
        ShowViewModel<LoginViewModel>();            
    }
    

    Должен быть лучший метод!

  2. Когда я вызываю close на LoginViewModel, отправленное вами сообщение получает FirstVM, но WinRT создает новый FirstVM и перемещается к этому экземпляру, а не к первому из них.

Вероятно, есть намного лучший способ сделать все это в любом случае!

благодаря

Росс

Теги:
mvvmcross
windows-store-apps

1 ответ

1

У WinRT есть другая модель навигации по умолчанию для WinPhone/Silverlight

Там есть хорошее объяснение этого на http://mikaelkoskinen.net/winrt-navigation-cache-or-why-going-back-to-previous-page-creates-a-new-instance-of-the-page/ - в том числе о том, как имитировать WinPhone

Ещё вопросы

Сообщество Overcoder
Наверх
Меню