2017-07-19 7 views
0

I Xamarin bin mit beiden eine App für iOS und Android zu erstellen, habe ich einen Anwendungsfall, dass ich eine Taste drücken, und es wird eine Modal öffnen, dann nach einer Taste auf der Auswahl die modal, wird es noch einige Informationen aktualisieren und dann muss ich den Modal aus und laden sie die Hauptseite darunter Pop. Wie ist das möglich?Xamarin - Reload Seite nach Navigation.PopModalAsync()

Startseite:

public partial class MainPage : ContentPage 
{ 
    public MainPage(Object obj) 
    { 

     InitializeComponent(); 

     // do some things with obj... 

     BindingContext = this; 

    } 

    public ButtonPressed(object sender, EventArgs args) 
    { 
     Navigation.PushModalAsync(new SecondaryPage(newObj)); 
    } 

} 

Secondary Seite:

public partial class SecondaryPage : ContentPage 
{ 
    public SecondaryPage(Object newObj) 
    { 

     InitializeComponent(); 

     BindingContext = this; 

    } 

    public ButtonPressed(object sender, EventArgs args) 
    { 
     // Do something to change newObj 

     Navigation.PopModalAsync(); 
    } 

} 

So nach dem PopModalAsync(), muss ich die Mainpage() Konstruktor der Lage sein, zu nennen aber die "NEWOBJ" pass dass ich in der SecondaryPage geändert. Ist das überhaupt möglich?

+0

entweder in einem Abschluss Delegierten zu Ihrem modalen übergeben, die ausgeführt wird, wenn es geschlossen wird, oder MessagingCenter verwenden, um eine Nachricht von der schicken modal zur Hauptseite – Jason

Antwort

0

Der richtige Weg, dies in .net zu tun ist, um ein Ereignis zu gründen:

public partial class SecondaryPage : ContentPage 
{ 
    public SecondaryPage(Object newObj) 
    { 

     InitializeComponent(); 

     BindingContext = this; 

    } 

    // Add an event to notify when things are updated 
    public event EventHandler<EventArgs> OperationCompeleted; 

    public ButtonPressed(object sender, EventArgs args) 
    { 
     // Do something to change newObj 
     OperationCompleted?.Invoke(this, EventArgs.Empty); 
     Navigation.PopModalAsync(); 
    } 

} 

public partial class MainPage : ContentPage 
{ 
    public MainPage(Object obj) 
    { 

     InitializeComponent(); 

     // do some things with obj... 

     BindingContext = this; 

    } 

    public ButtonPressed(object sender, EventArgs args) 
    { 
     var secondaryPage = new SecondaryPage(newObj); 
     // Subscribe to the event when things are updated 
     secondaryPage.OperationCompeleted += SecondaryPage_OperationCompleted; 
     Navigation.PushModalAsync(secondaryPage); 
    } 

    private void SecondaryPage_OperationCompleted(object sender, EventArgs e) 
    { 
     // Unsubscribe to the event to prevent memory leak 
     (sender as SecondaryPage).OperationCompeleted -= SecondaryPage_OperationCompleted; 
     // Do something after change 
    } 
} 
Verwandte Themen