2016-03-22 4 views
0

In meiner UWP-App möchte ich eine App-interne Kontaktbuchseite erstellen. Ich kann einen Kontakt auswählen und den ausgewählten Kontakt auf die Seite zurückbringen, auf der ich das Kontaktbuch geöffnet habe.Seite mit Ergebnis öffnen (wie Kontaktbuch)

In Android wo ich herkomme gibt es eine Funktion namens "startActivityForResult", die eine Aktivität öffnet, erhält den Rückgabewert, wenn Sie fertig sind.

Ich möchte das gleiche Verhalten erstellen.

Ich tat dies mit Frame.Navigate(typeof(ContactBook)) und dann, wenn der Kontakt Frame.GoBack() i zurück navigieren mit Frame.Navigate(typeof(PreviousPage), selectedContact)

Verfahren ausgewählt wird, ist in diesem Fall nutzlos, weil ich keine Parameter übergeben werden kann.

Wie kann ich dieses Problem lösen?

+0

Sie können den ausgewähltenKontakt in lokalen Einstellungen speichern und diesen Wert verwenden – Archana

+0

Das ist ziemlich hässlich, nicht wahr? Auch das ContactBook von Windows 10 kann dieses Verhalten implementieren. – TableCreek

Antwort

0

Ich bin nicht 100% vertraut mit Android und "startActivityForResult", aber möchten Sie den gesamten Frame weg navigieren? Es gibt keine Entsprechung in UWP-Apps, noch gibt es eine solche für WPFs showDialog(), was wahrscheinlich das ist, wonach Sie suchen.

Sie haben nur ein paar Optionen und keine von ihnen sind wirklich "erstaunlich" per-say.

Sie können das tun, was Sie oben getan haben. Navigieren Sie zu der Seite mit allen Kontakten und navigieren Sie dann zu einer neuen Seite. Je nachdem, wie Ihre App angelegt ist, können Daten auf der Seite verloren gehen (Da es sich um eine neue Instanz handelt und nicht um eine Rückposition im Stapel, können Sie sie nicht wirklich zwischenspeichern). Sie können auch nicht zu einer Instanz einer Seite navigieren, sondern nur zu einer neuen Seite oder durch den Stapel von Back/Forward. Wenn Sie jedoch GoBack verwenden und die Seite zwischenspeichern (indem Sie den Modus "required" für das Caching verwenden), könnten Sie einen gespeicherten Wert in einer statischen Klasse suchen (ich weiß, hässlich und nicht MVVM) oder einen lokalen Einstellungswert setzen und das Lesen in der OnNavigatedTo() - Methode für die vorherige Seite.

Wenn Sie die Rahmenbewegung nicht benötigen, können Sie ein Flyout oder ein benutzerdefiniertes Flyout-Steuerelement verwenden, um ein Popup von Arten zu erstellen, das den XAML für die Seite anstelle eines Seitenrahmens anzeigt. Dies wird einige Schwierigkeiten bei der Größenanpassung haben (also eher bei W10 als bei W10M) und so, aber Sie werden nicht in der Lage sein, aus dem Rahmen selbst herauszukommen. Dann können Sie den Wert des ausgewählten und dann des Submit-Ereignisses sehen, Sie können einfach mit der Seite arbeiten, da sie bereits geöffnet ist.

Bei Bedarf könnten Sie eine benutzerdefinierte Benutzersteuerung für das Flyout erstellen und einige benutzerdefinierte Abhängigkeitseigenschaften, die für MVVM gebunden werden können, hängt es wirklich davon ab, was und wie Sie es tun.

So kurze Antwort, es gibt keinen schnellen Weg zu erreichen, was Sie suchen, und das scheint ein Problem mit der API. Ich würde den Vorschlag auf dem Benutzervoice der API machen (https://wpdev.uservoice.com/forums/110705-universal-windows-platform) und versuchen, ihn heraufgestimmt zu erhalten!

0

Es gibt keine Entsprechung in UWP-Apps, noch gibt es eine solche für WPFs showDialog(), was wahrscheinlich genau das ist, wonach Sie suchen.

@Daniel, nein, es gibt ein Äquivalent in UWP-Anwendungen. Bitte beachten Sie Launch an app for results, Sie können dem Tutorial in diesem Dokument folgen, um dies zu erreichen.

Um dies zu tun, müssen Sie zwei Anwendungen erstellen. Eine ist die App, die die Ergebnis-App startet (sagen wir "Haupt-App"), die andere App sollte hier die Kontakt-Adressbuch-App sein.Die Kontaktbuch-App verhält sich wie ein modales Fenster und die Haupt-App wartet auf das Ergebnis der Kontaktbuch-App.

In einer UWP-App können Sie jedoch die Klasse ContactStore verwenden, um auf die Datenbank zuzugreifen, die Kontakte enthält.

Sie müssen also erneut prüfen, ob dies erforderlich ist, um eine Kontakt-App selbst zu erstellen.

Edit: ich Ihre Frage falsch verstehen kann, Sie wollen einfach nur Ihre Seite Verhalten wie Kontakt-Buch, wollen keinen Kontakt-Buch selbst erstellen. Aber egal, Sie können auch eine andere App erstellen, die Ihre Seite enthält, die Sie von Ihrer Hauptanwendung aus starten möchten.

+0

Thak Sie für Ihre Antwort. Ich löste das Problem mit einem Singleton und nach der Navigation überprüfe ich diesen Singleton für einen Wert. Ziemlich hässlich, aber es funktioniert. Ich werde die Antwort von Daniel akzeptieren, weil er zuerst antwortete und Sie beide ähnliche Antworten haben. Sei also nicht sauer auf mich. – TableCreek

+0

@TableCreek, es ist OK. Aber ich denke nicht, dass wir über die ähnliche Sache sprechen. –