我正在尝试在MvvmCross中创建一个简单的登录视图(使用Xamarin.Forms选项),在按下登录按钮后切换到另一个视图,但是当我执行this.ShowViewModel<MainViewModel>();
或{{1 }}
它会留下一个导航后退按钮,将视图切换回登录视图。
如何显示不同的视图,但阻止其添加后退按钮?
以下是我的LoginViewModel.cs文件:
navigationService.Navigate<MainViewModel>();
这是我的LoginPage.xaml文件:
using System;
using System.Threading.Tasks;
using System.Windows.Input;
using MvvmCross.Core.Navigation;
using MvvmCross.Core.ViewModels;
namespace MvvmForms.MySampleApp.Core.ViewModels
{
public class LoginViewModel : MvxViewModel
{
readonly IMvxNavigationService navigationService;
public LoginViewModel(IMvxNavigationService navigationService)
{
this.navigationService = navigationService;
}
...
public ICommand ShowMainPageCommand => new MvxCommand(ShowInfoPage);
private void ShowMainPage()
{
navigationService.Navigate<MainViewModel>();
}
}
}
答案 0 :(得分:1)
转到其他页面后,从导航堆栈中删除登录页面
推送你的页面
await Navigation.PushAsync(new MainPage());
现在,如果你有登录页面的引用,你可以
Navigation.RemovePage(loginPage);
否则在堆栈上找到您的页面并将其删除
var pages = Navigation.NavigationStack.ToList();
foreach (var page in pages)
{
if (page.GetType() == typeof(LoginPage))
Navigation.RemovePage(page);
}
答案 1 :(得分:0)
此方法可能适合您。
_navigation的类型为NaviagtionPage
页面是您希望成为新根的页面。
var root = _navigation.Navigation.NavigationStack.First();
_navigation.Navigation.InsertPageBefore(page);
_navigation.PopToRootAsync();
这会将您的页面作为根页面插入并删除登录页面