#xamarin #prism
#xamarin #призма
Вопрос:
Занимался этим несколько дней. Очень простая логика. Перейдите на домашнюю страницу, если bla = true, пропуская страницу входа.
Я сократил код, чтобы продемонстрировать это. Кнопка входа в систему перемещается как обычно. Однако страница входа в систему должна быть фактически пропущена, поскольку OnNavigatedTo имеет ту же команду NavigateAsync.
Побочный эффект, который не имеет смысла, заключается в том, что код HomeViewModel запускается при запуске функции OnNavigatedTo.
public class LoginViewModel : AppMapViewModelBase
{
private readonly INavigationService _navigationService;
public DelegateCommand LoginCommand { get; private set; }
public LoginViewModel(INavigationService navigationService) : base(navigationService)
{
LoginCommand = new DelegateCommand(LoginUserAsync);
_navigationService = navigationService;
}
private async void LoginUserAsync()
{
//This works as expected
await _navigationService.NavigateAsync("/MasterDetail/NavigationPage/Home");
}
public override async void OnNavigatedTo(INavigationParameters parameters)
{
base.OnNavigatedTo(parameters);
//This Executes the code on Home but does not Jump there.
await _navigationService.NavigateAsync("/MasterDetail/NavigationPage/Home");
}
}
Код HomeViewModel, который каким-то образом запускается, даже не переходя на домашнюю страницу.
public HomeViewModel(INavigationService navigationService) : base (navigationService)
{
Debug.WriteLine("............HomeViewModel Loaded.................................");
}
Ответ №1:
Изменение основного инициализированного в приложении с
await NavigationService.NavigateAsync("NavigationPage/Login");
Для
await NavigationService.NavigateAsync("/Login");
останавливает передачу NavigateAsync(«/….. через инициализированное приложение
Понятия не имею, почему, но это работает.