alerta - PushModalAsync de MasterDetailPage, formularios de Xamarin
xamarin forms side menu (1)
Creo que tienes que cambiar tu diseño.
Cuando presiona "Cerrar sesión", creo que debe ir a una página de "Inicio de sesión" (tal vez su "Página principal ()" ... No lo sé) y esta página de "Inicio de sesión" debe estar fuera de su "Panel de navegación".
Entonces, si tu escenario es
- Página A = LoginPage
- Página B = MasterDetailPage (Aparece después de LoginPage)
Deberías hacer algo así como thin en tu App.cs
Application.Current.MainPage = new PageA();
cuando presiona "Botón de inicio de sesión" en la página A () debe cambiar su página principal
Application.Current.MainPage = new PageB();
Utiliza la navegación solo para sus páginas de "Detalles" ... por lo tanto, cuando presiona "Cerrar sesión", no debe pulsar o Pop, pero debe cambiar su página principal.
Application.Current.MainPage = new PageA(); // Come back to Login
Estoy intentando navegar a la pantalla de inicio cuando el usuario toca "Cerrar sesión" en el menú lateral, por lo tanto, no puede tener navegación para volver a la página anterior. PushModalAsync acomoda esto, pero hacerlo desde mi MasterDetailPage no parece funcionar.
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;
}
}
Lo que he intentado: intenté asignarlo a una variable:
var goToMainPage = Navigation.PushModalAsync(new MainPage());
luego agregarlo a donde yo quiero:
var page5 = new MasterPageItem() { Title = "Log out", Icon = "signout.png", TargetType = typeof(goToMainPage) };
- Pero esto no reconoció mi variable.
¿Hay alguna forma alternativa de hacer esto? Gracias.