2016-10-01 16 views
0

Ich habe eine Seite, die 3-4 Eintragskontrollen hat. Ich habe ein Verhalten erstellt, um diese Einträge zu validieren. Ich habe auch die Eingabeklasse erweitert, um Ränder, Rahmenfarbe und Rahmenradius zu haben. So ist die XAML somethin wie dieseXamarin Forms Validierung. Aggregieren Sie das Ergebnis von mehreren Steuerverhalten

<controls:ExtendedEntry x:Name="emailaddressEntry" 
              Grid.Row="0" 
              Grid.Column="1" 
              BorderColor="Black" 
              HasBorder="True" 
              IsEnabled="True" 
              Placeholder="Email Address" 
              Text="{Binding EmailAddress}"> 
         <controls:ExtendedEntry.Behaviors> 
          <v:EntryValidatorBehavior x:Name="EmailAddressValidator" 
                 IsCheckEmail="True" 
                 IsCheckEmpty="True" /> 
         </controls:ExtendedEntry.Behaviors> 
        </controls:ExtendedEntry> 

Nun ist das EntryValidator Verhalten eine IsValid Eigenschaft hat, die uns sagt, wenn die Steuerung in einem gültigen Zustand ist oder nicht. Was ich tun möchte, ist aktivieren oder deaktivieren Sie meine Schaltfläche senden basierend auf der IsValid aller Einträge. So etwas wie dieses

<Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" BindingContext="{x:Reference EmailAddressValidator,PasswordValidator,AddressValidator}" IsEnabled="{Binding Path=EmailAddressValidator.IsValid && PasswordValidator.IsValid && AddressValidator.IsValid}"/> 

Antwort

2

Ich glaube nicht, dies zu tun in Ihrem Button<Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" BindingContext="{x:Reference EmailAddressValidator,PasswordValidator,AddressValidator}" aber warum nicht ein boolean in Ihrem PageModel schaffen, die es für Sie tut?

Ihre ExtendedEntryIsValid Eigenschaften booleans in Ihrem PageModel binden, das heißt IsEmailValid. Und dann in Ihrem PageModel eine boolesche IsFormValid, an die Sie Ihre Schaltfläche wie folgt binden: <Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" IsEnabled="{Binding IsFormValid}" />.

Auch Sie müssen die IPropertyChanged auf Ihrem PageModel implementieren oder Fody.PropertyChanged verwenden, um Ihr Leben einfacher zu machen.