Как перейти от главной страницы сведений к странице содержимого в формах xamarin? - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть страница входа, которая является страницей навигации, и здесь я перехожу к главной странице сведений. Но теперь я хочу вернуться на страницу входа, когда нажимаю кнопку выхода из системы. Вот что я делаю для этого. Моя страница входа и Основная страница сведений Я хочу, когда я нажимаю на выход из системы, элемент управления существует из MDP и возвращается на страницу входа.

Мой логинVM

//here i navigate to my home page(Master detail page)

if (user.UserName == Employees.UserName && user.Password == Employees.Password)
{
    await App.Current.MainPage.DisplayAlert("success", "Login success", "OK");

    await App.Current.MainPage.Navigation.PopAsync();
    var masterDetailPage = new MasterDetailPage1();
    masterDetailPage.Detail = new NavigationPage(new Page1());
    Application.Current.MainPage = masterDetailPage;
}

Моя страница сведений о главном Xml

<?xml version="1.0" encoding="utf-8" ?>
<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             x:Class="MyProject.Views.Profile.MasterDetailPage1"
             xmlns:pages="clr-namespace:MyProject.Views.Profile"
                  >
    <MasterDetailPage.ToolbarItems>
        <ToolbarItem Text="Logout" Clicked="ToolbarItem_Clicked"/>
    </MasterDetailPage.ToolbarItems>
    <MasterDetailPage.Master>

        <pages:MasterDetailPage1Master x:Name="MasterPage" />

    </MasterDetailPage.Master>

  <MasterDetailPage.Detail>

  </MasterDetailPage.Detail>

</MasterDetailPage>

CS страницы главного задания

public partial class MasterDetailPage1 : MasterDetailPage
{           
    public MasterDetailPage1()
    {
        InitializeComponent();               
    }

    //some other code

    private void ToolbarItem_Clicked(object sender, EventArgs e)
    {
        (this.Detail as NavigationPage).PushAsync(new LoginPage());
        //App.Current.MainPage.Navigation.PushModalAsync(new LoginPage());
    }
}

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

Ответы [ 2 ]

0 голосов
/ 24 февраля 2019

Прежде всего, вам не нужно вызывать следующую строку кода в LoginVM.Потому что в конце вы устанавливаете Application.Current.MainPage.

await App.Current.MainPage.Navigation.PopAsync();

Почему вы хотите нажать на страницу входа?Если вы хотите полностью выйти из системы, он / она не сможет вернуться на предыдущую страницу, нажав кнопку «Назад».

По моему мнению, вам следует снова установить Application.Current.MainPage.Вероятно, так же, как вы сделали в App.xaml.cs.

0 голосов
/ 24 февраля 2019
                var masterDetailPage = new MasterDetailPage1();
                masterDetailPage.Detail = new NavigationPage(new Page1());
                Application.Current.MainPage = masterDetailPage;

Здесь вы объявляете детали своей главной страницы как страницу навигации и устанавливаете ее в качестве текущей главной страницы.Но вы сейчас находитесь в NagiationPage, поэтому, когда вы звоните

            (this.Detail as NavigationPage).PushAsync(new LoginPage());

, вы вставляете новый LoginPage в свой стек навигации, но ваша другая страница все еще доступна через кнопку назад, вам нужно переопределитьВаша главная страница:

                Application.Current.MainPage = new LoginPage();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...