2016-05-27 5 views
-1

Der Knopf von der Detailseite kann nicht zu einer Hauptdetailseite gehen. Es zeigt weiterhin den Fehler "Break Exception" an. Vielleicht setze ich dieses Recht nicht um. Bitte helfen :(So navigieren Sie von der Detailseite zur Master-Detailseite?

+1

Wir können Ihnen nicht helfen, wenn Sie uns nicht zeigen, was du tust. Eine vage Beschreibung des Problems ist nicht wirklich hilfreich - zeigen Sie uns den relevanten Teil Ihres Codes. – Jason

+0

@Jason .. Ich kann nicht über eine Schaltfläche zu einer MasterDetail-Seite navigieren. private async void SignIn_OnClicked (Objekt Absender, EventArgs e) { erwarten Navigation.PushAsync (new NavigationPage (new template.MasterDetailPage())); } – arvinhubert

+0

MasterDetail muss der Stamm sein, es kann nicht innerhalb einer NavigationPage – Jason

Antwort

1

Master Detailseite funktioniert nicht so. Sie navigieren nicht von Master zu Detail und zurück. Master ist immer verfügbar, aber auf Telefon es herausgleitet wie eine Schublade und auf Tablet ist es vorhanden zusammen mit der Detailseite, wenn nicht absichtlich versteckt.

public class App : Application 
{ 
    MasterDetailPage masterdetail; 
    Page detailpage; 
    Page masterpage; 

    protected override void OnStart() 
    { 
     masterdetail= new MasterDetailPage(); 
     detailpage = new MyDetailPage(); 
     masterpage = new Page(); 
     masterdetail.Master = masterpage; 
     masterdetail.Detail = detailpage; 
     MainPage = masterdetail;   
    } 

} 

Am Telefon

Mit dem obigen Beispiel können Sie die Detailseite sehen würden nur, wenn Sie von rechts nach links schieben oder der masterdetail.IsPresented auf true ändern in Code

auf Tablette

Wenn masterdetail.IsPresent gilt die Masterpage auf der linken Seite und das Detail auf der rechten Seite, ohne einen anderen Code zu modifizieren diese zeigen würde.

IsPresented

Was Sie können suchen die IsPresented Feld aus einem Button-Klick zugreift.

public partial class MyDetailPage : ContentPage 
{ 
    Button abutton;  

    MyDetailPage() 
    { 
     abutton = new Button(); 
     abutton.click += (o,s) => {App.masterdetail.IsPresented == true ? false : true} 
    } 
} 

Allgemeine Nutzungs

Die allgemeine Absicht dieses Layout-Design ist, dass die Master-Seite führt zur Unternavigation Detailseite in so etwas wie eine Kontaktliste -> Spezifische Kontaktdaten eingeben Beziehung.

https://developer.xamarin.com/guides/xamarin-forms/user-interface/navigation/master-detail-page/

Navigation Um sich von anderen Seite

button.click += (o,s) => 
{ 
    var detailpage = new Page(); 
    var masterpage = new Page(); 
    var masterdetailpage = new MasterDetailPage(); 
    masterdetailpage.Master = masterpage; 
    masterdetailpage.Detail = detailpage; 
    App.Current.MainPage = masterdetailpage; 
} 

die gleiche Sache von XAML mit Befehlen

Das folgende Beispiel einen Befehl im page's.cs Code Masterdetail erstellt und bindet es an eine Schaltfläche auf der XAML für die Seite.

public partial class CurrentPage : ContentPage 
{ 
    private ICommand goToMasterDetailCommand; 
    public ICommand goToMasterDetail 
    { 
     return goToMasterDetailCommand ?? (goToMasterDetailCommand = new Command(async() => await ExecuteGoToMasterDetail())); 
    } 

    private async Task ExecuteGoToMasterDetail() 
    { 
     var detailpage = new Page(); 
     var masterpage = new Page(); 
     var masterdetailpage = new MasterDetailPage(); 
     masterdetailpage.Master = masterpage; 
     masterdetailpage.Detail = detailpage; 
     App.Current.MainPage = masterdetailpage; 
    } 
} 
<Button 
x:Name="GoToButton" 
Text="Go To Master Detail" 
HorizontalOptions="FillAndExpand" 
Command="{Binding goToMasterDetail}" 
IsVisible="true"> 
+0

Ich möchte die MasterDetailPage über einen Button starten. Grundsätzlich mache ich hier, wenn der Benutzer auf die Schaltfläche klickt. Es wird zur Masterdetail-Seite navigiert. – arvinhubert

+0

Aktualisierte Antwort mit Beispiel zum Springen zu einer Master-Detailseite von außerhalb der Seite –

+0

Kann ich das mit XAML verwenden? – arvinhubert

0

Bitte versuchen Application.Current.MainPage = new MasterDetailsPage(); Auf Schaltfläche klicken

Verwandte Themen