2016-04-06 10 views
2

Gibt es eine Möglichkeit, benutzerdefinierte Popup-Dialog mit Editor darin mit Xamarin Forms zu erstellen. Gezielt auf iOS-Plattform.Benutzerdefiniertes Popup in Xamarin.Forms

Ich möchte ein Popup mit einem Titel Label, Textfeld für die Annahme von Eingabe und Fehler Label für die Anzeige von Fehlermeldung, mit OK und Abbrechen.

Ich möchte Pin-Nummer von Eingang Pop-up akzeptieren und Pin validieren müssen. Wenn die Validierung fehlschlägt, muss eine Fehlermeldung im Popup-Fenster angezeigt werden.

Danke,

+0

Was sind Ihre Anforderungen an das Popup? Muss es vollständig anpassbar sein? –

+0

@ChaseFlorell: aktualisierter Text überprüfen Sie bitte für meine Anforderung. –

Antwort

1

Werfen Sie einen Blick auf ACR User Dialoge. https://github.com/aritchie/userdialogs

Nuget Paket: https://www.nuget.org/packages/Acr.UserDialogs/

auf den Seiten Prompt Beispiele einen Blick: https://github.com/aritchie/userdialogs/blob/master/src/Samples/Samples/ViewModels/StandardViewModel.cs#L97

void Prompt() 
     { 
      UserDialogs.Instance.ActionSheet(new ActionSheetConfig() 
       .SetTitle("Choose Type") 
       .Add("Default",() => this.PromptCommand(InputType.Default)) 
       .Add("E-Mail",() => this.PromptCommand(InputType.Email)) 
       .Add("Name",() => this.PromptCommand(InputType.Name)) 
       .Add("Number",() => this.PromptCommand(InputType.Number)) 
       .Add("Number with Decimal",() => this.PromptCommand(InputType.DecimalNumber)) 
       .Add("Password",() => this.PromptCommand(InputType.Password)) 
       .Add("Numeric Password (PIN)",() => this.PromptCommand(InputType.NumericPassword)) 
       .Add("Phone",() => this.PromptCommand(InputType.Phone)) 
       .Add("Url",() => this.PromptCommand(InputType.Url)) 
      ); 
     } 
+0

Ich habe das versucht, konnte ich die Eingabe von Popup nehmen, aber das Problem ist, wenn die Eingabe ungültig ist, muss ich Fehlermeldung im Popup anzeigen, Wie kann ich das erreichen? –

+0

Ich würde empfehlen, etwas mit Verhaltensweisen zu tun, wenn möglich: https://blog.xamarin.com/behaviors-in-xamarin-forms/. Oder zumindest eine Art von Inline-Fehlermeldungen verwenden –

+0

Vielen Dank @Adam Pedley, Wie Sie Verhalten für Acr Popup hinzufügen. –

4

Dies ist ein gutes Pop-up für XF, der die Fähigkeit beinhaltet einen Editor zum Popup hinzuzufügen.

Popup Page Plugin for Xamarin Forms

// Use these methods in PopupNavigation globally or Navigation in your pages 

// Open new PopupPage 
Task PushAsync(PopupPage page, bool animate = true) // Navigation.PushPopupAsync 

// Hide last PopupPage 
Task PopAsync(bool animate = true) // Navigation.PopPopupAsync 

// Hide all PopupPage with animations 
Task PopAllAsync(bool animate = true) // Navigation.PopAllPopupAsync 

// Remove one popup page in stack 
Task RemovePageAsync(PopupPage page, bool animate = true) // Navigation.RemovePopupPageAsync 

XAML popup

<?xml version="1.0" encoding="utf-8" ?> 
<pages:PopupPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:pages="clr-namespace:Rg.Plugins.Popup.Pages;assembly=Rg.Plugins.Popup" 
      xmlns:animations="clr-namespace:Rg.Plugins.Popup.Animations;assembly=Rg.Plugins.Popup" 
      x:Class="Demo.Pages.MyPopupPage"> 
    <!--Animations use example--> 
    <pages:PopupPage.Animation> 
    <animations:ScaleAnimation 
     PositionIn="Center" 
     PositionOut="Center" 
     ScaleIn="1.2" 
     ScaleOut="0.8" 
     DurationIn="400" 
     DurationOut="300" 
     EasingIn="SinOut" 
     EasingOut="SinIn" 
     HasBackgroundAnimation="True"/> 
    </pages:PopupPage.Animation> 
    <!-- Content --> 
</pages:PopupPage> 

popup

public partial class MyPopupPage : PopupPage 
    { 
     public SecondPopupPage() 
     { 
      InitializeComponent(); 
     } 

     protected override void OnAppearing() 
     { 
      base.OnAppearing(); 
     } 

     protected override void OnDisappearing() 
     { 
      base.OnDisappearing(); 
     } 

     // Method for animation child in PopupPage 
     // Invoced after custom animation end 
     protected virtual Task OnAppearingAnimationEnd() 
     { 
      return Content.FadeTo(0.5); 
     } 

     // Method for animation child in PopupPage 
     // Invoked before custom animation begin 
     protected virtual Task OnDisappearingAnimationBegin() 
     { 
      return Content.FadeTo(1);; 
     } 

     protected override bool OnBackButtonPressed() 
     { 
      // Prevent hide popup 
      //return base.OnBackButtonPressed(); 
      return true; 
     } 

     // Invoced when background is clicked 
     protected override bool OnBackgroundClicked() 
     { 
      // Return default value - CloseWhenBackgroundIsClicked 
      return base.OnBackgroundClicked(); 
     } 
    } 

HAUPTSEITE

// Main Page 

    public partial class MainPage : ContentPage 
    { 
     public MainPage() 
     { 
      InitializeComponent(); 
     } 

     // Button Click 
     private async void OnOpenPupup(object sender, EventArgs e) 
     { 
      var page = new MyPopupPage(); 

      await Navigation.PushPopupAsync(page); 
      // or 
      await PopupNavigation.PushAsync(page); 
     } 
    } 
+0

Vielleicht wurde Ihre andere Antwort gelöscht, weil sie nur einen Link enthält. Sie können über Ihr Benutzerprofil, Registerkarte Aktivität, Antworten, "letzte gelöschte Antworten" am Ende der Antwortliste überprüfen. –

+0

Können wir es nicht tun, ohne Nuget Package und benutzerdefinierte Renderings zu verwenden. –