xamarin - 为什么 await _navigationService.NavigateAsync 在 OnNavigatedTo 函数中不起作用
问题描述
一直在这几天。很简单的逻辑。如果 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.................................");
}
解决方案
将 App 中的主要 OnInitialized 从
await NavigationService.NavigateAsync("NavigationPage/Login");
至
await NavigationService.NavigateAsync("/Login");
停止 NavigateAsync("/..... 通过 App-OnInitialized
不知道为什么,但它有效。
推荐阅读
- mysql - 从重复记录中显示
- python - 在列表python中插入元素
- c# - C# - 解析值时遇到意外字符
- python - Apriori算法 - 没有得到python中的规则
- javascript - React 中的 onCick 更改了 react 中的所有类状态
- kdb - qPython 功能查询
- ios - 是否会为已在 App Store 上评分的用户显示应用内评分应用弹出窗口?
- php - 如何在分块上传期间检测文件更改?
- angular - 当我尝试将 billboard.js 图表库与 Angular 6 一起使用时面临图表大小问题
- c# - 当我尝试创建帖子时,IEntityChangeTracker 的多个实例无法引用实体对象