来自MasterDetailPage,Xamarin Forms的PushModalAsync

时间:2017-10-21 09:23:22

标签: xamarin xamarin.forms

当用户从侧面菜单中点击“退出”时,我试图导航到启动屏幕,因此无法导航返回上一页。 PushModalAsync适应这一点,但从我的MasterDetailPage做它似乎不起作用。

Profile.cs

 public partial class Profile : MasterDetailPage
    {
        public List<MasterPageItem> menuList { get; set; }
        public Profile()
        {
            InitializeComponent();
            this.lblMessage.Text = Settings.Name + " " + Settings.Surname;
            menuList = new List<MasterPageItem>();
            var page1 = new MasterPageItem() { Title = "Home", Icon = "home.png", TargetType = typeof(Page1) };
            var page2 = new MasterPageItem() { Title = "Cards", Icon = "card.png", TargetType = typeof(Cards) };
            var page3 = new MasterPageItem() { Title = "Transactions", Icon = "settings.png", TargetType = typeof(Transactions) };
            var page5 = new MasterPageItem() { Title = "Log out", Icon = "signout.png", TargetType = typeof(MainPage) };


            menuList.Add(page1);
            menuList.Add(page2);
            menuList.Add(page3);
            menuList.Add(page5);


            navigationDrawerList.ItemsSource = menuList;
            Detail = new NavigationPage((Page)Activator.CreateInstance(typeof(Page1)));

        }
        private void OnMenuItemSelected(object sender, SelectedItemChangedEventArgs e)
        {

            var item = (MasterPageItem)e.SelectedItem;
            Type page = item.TargetType;

            Detail = new NavigationPage((Page)Activator.CreateInstance(page));
            IsPresented = false;
        }



    }

我尝试过的内容: 我尝试将其分配给变量:

var goToMainPage = Navigation.PushModalAsync(new MainPage());

然后将其添加到我想要的位置:

var page5 = new MasterPageItem() { Title = "Log out", Icon = "signout.png", TargetType = typeof(goToMainPage) }; - 但这并没有认出我的变量。

有没有其他方法可以完成这项工作?感谢。

1 个答案:

答案 0 :(得分:1)

我认为你必须改变你的设计。

按&#34;退出&#34;我想你必须去&#34;登录&#34;页面(也许是您的&#34; MainPage()&#34; ...我不知道)和这个&#34;登录&#34;页面应该在你的&#34; NavigationStack&#34;。

之外

因此,如果您的方案是

  • PageA = LoginPage
  • PageB = MasterDetailPage(登录页面后出现)

你应该在App.cs中做一些像瘦的事情

Application.Current.MainPage = new PageA();

按下&#34;登录按钮&#34;在PageA()上你应该改变你的主页

Application.Current.MainPage = new PageB();

您只能将导航用于&#34;详细信息&#34;页面...所以当你按下&#34;退出&#34;你不应该推或弹,但你应该改变你的主页

Application.Current.MainPage = new PageA(); // Come back to Login