es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cambiar MasterDetailPage.Master?

Tengo un MasterDetailPage y necesito reemplazar dinámicamente la página Master sin destruir la página Detail.

public App()
{
    InitializeComponent();

    MainPage = new MasterDetailPage()
    {
        Master = new Page1(),
        Detail = new NavigationPage(new PageXXX())
    };
}

Intenté con el enfoque directo, que parece intuitivo:

private void onTestButtonClicked(object sender, EventArgs e)
{

    ((MasterDetailPage)(Application.Current).MainPage).Master = new Page2();

}

Pero me arroja un error, que por alguna razón no puedo rastrear hasta la fuente:

Xamarin.Forms.Xaml.XamlParseException: 'Posición 13:17. StaticResource no encontrado para la clave itemTemplate'

¿Cómo reemplazar dinámicamente el Master de MasterDetailPage?

Tags:  

Answer

  1. Avatar for davy.ai

    Para reemplazar dinámicamente el Maestro de un MasterDetailPage sin destruir la página de Detalles, puede utilizar el siguiente código:

    private void onTestButtonClicked(object sender, EventArgs e)
    {
        var masterPage = new Page2();
        var detailPage = ((MasterDetailPage)(Application.Current.MainPage)).Detail;
    
        ((MasterDetailPage)(Application.Current.MainPage)).Master = masterPage;
        ((MasterDetailPage)(Application.Current.MainPage)).Detail = detailPage;
    }
    

    Este código crea una nueva instancia de la página Maestro deseada, guarda una referencia a la página Detalles existente, establece la nueva página Maestro en el MasterDetailPage y restablece la página Detalles guardada en el MasterDetailPage. De esta manera, la página Detalles permanece intacta mientras se reemplaza dinámicamente la página Maestro.

Comments are closed.