Wie öffne ich ein benutzerdefiniertes Dialogfeld / Popup mit Xamarin.Forms?

8

Ich bin ein Neuling für Xamarin.Forms und stecke mit einer Situation fest, in der ich ein Popup-Fenster mit meinen Steuerdetails öffnen möchte [z. Mitarbeiterdetails anzeigen] beim Klicken auf die übergeordnete Seite.

Wie kann ich ein benutzerdefiniertes Dialogfeld / Popup mit Xamarin.Forms öffnen?

Jeder Beispielcode wird geschätzt?

Vielen Dank im Voraus!

    
Nirav Mehta 22.09.2014, 10:59
quelle

3 Antworten

3

Der allgemeine Zweck dessen, was Sie erreichen möchten, kann mithilfe der Methoden PushModalAsync und PopModalAsync von Xamarin.Forms Navigation Objekt.

Die Chancen stehen gut genug für das, was Sie brauchen - Allerdings - das ist nicht wirklich modal. Ich werde nach einem kleinen Code-Ausschnitt erklären: -

%Vor%

Das Problem mit dem oben genannten ist, dass das

%Vor%

kehrt sofort nach der Animation zurück.

Sie können zwar nicht mit der vorherigen Seite interagieren, da wir eine neue Navigationsseite mit einer Schließen -Schaltfläche anzeigen - übergeordnet Navigations-Seite wird weiterhin im Hintergrund ausgeführt.

Wenn Sie also irgendwelche Timer oder irgendetwas ausführen würden, würden diese immer noch aufgerufen werden, wenn Sie diese nicht stoppen.

Sie können auch den Ansatz TaskCompletionSource verwenden, wie im folgenden Beitrag beschrieben, auch Wie kann ich die Modal-Form-Entlassung mit Xamarin.Forms abwarten? .

Hinweis: Obwohl Sie nun erwarten können, dass die zweite Seite angezeigt wird, und wenn diese Seite dann abgewiesen wird, damit die Codeausführung in der nächsten Zeile fortgesetzt wird, ist immer noch nicht ein modales Formular Wieder werden Timer oder irgendetwas, das noch ausführt, auf der Elternseite aufgerufen.

Update 1: -

Damit der Inhalt über dem vorhandenen Inhalt angezeigt wird, fügen Sie ihn einfach auf der aktuellen Seite ein. Sie können diesen Inhaltsabschnitt jedoch unsichtbar machen, bis Sie ihn benötigen.

Wenn Sie einen äußeren Container wie ein Grid verwenden, der mehrere untergeordnete Steuerelemente in derselben Zelle unterstützt, können Sie erreichen, was Sie möchten.

Sie möchten auch etwas wie eine gefüllte Box mit Transparenz verwenden, die auch die gesamte Seite abdeckt, um den sichtbaren, durchsichtigen Bereich zu steuern, der Ihren inneren Inhaltsbereich umgibt.

>     
Pete 22.09.2014, 15:59
quelle
13

Wenn Sie den Code Ihres Popups immer noch in einer eigenen Seite haben möchten, können Sie einige benutzerdefinierte Renderer gemäß der folgenden Logik einrichten.

1. Eine ModalPage & amp; entsprechender Renderer

%Vor%

2. HostSeite

%Vor%

3. HostPage-Renderer

%Vor%

Dann ist es so einfach wie das Anrufen %Code% von Ihrer Host-Seite oder in diesem speziellen Fall von dem ViewModel dahinter.

Was Pete über PushModalAsync / PopModalAsync gesagt hat, bleibt auch für diese Lösung gültig (was meiner Meinung nach kein Nachteil ist), aber Ihr Popup würde mit transparentem Hintergrund angezeigt.

Der Hauptvorteil dieses Ansatzes besteht meines Erachtens darin, dass Sie Ihre XAML / Code-Popup-Definition von der Host-Seite trennen und sie auf jeder anderen Seite wiederverwenden können, auf der Sie das Popup anzeigen möchten.

    
Gabor 21.04.2015 13:35
quelle
0

Ich habe den obigen Ansatz verfolgt und festgestellt, dass es unmöglich ist, unter iOS 7 zu laufen. Ich habe diese Bibliothek BTProgressHUD gefunden, die Sie ändern und verwenden können. I Verwenden Sie ihre Methoden vom Abhängigkeitsdienst. Aktuelle Bibliothek für Popups. Ссылка

Im folgenden Beispiel wird intern die BTProgressHUD-Bibliothek verwendet.

Ссылка

    
hrishikesh Deshpande 16.06.2015 06:11
quelle

Tags und Links