2016-10-01 3 views
0

У меня есть страница, которая имеет 3-4 элемента управления. Я создал поведение для проверки этих записей. Я также расширил класс ввода, чтобы иметь границы, цвет границы и радиус границы. Таким образом, Xaml это что-нибудь вроде этогоПроверка правильности формы Xamarin. Совокупность результата из нескольких методов управления

<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> 

Теперь EntryValidator поведение имеет IsValid свойство, которое говорит нам, если элемент управления находится в допустимом состоянии или нет. Что я хочу сделать, это включить или отключить мою кнопку отправки на основе IsValid всех записей. Что-то вроде этого

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

ответ

2

Я не думаю, что вы можете сделать это в Button<Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" BindingContext="{x:Reference EmailAddressValidator,PasswordValidator,AddressValidator}", но почему бы не создать логическое в вашем PageModel, который делает это для вас?

Свяжите свои ExtendedEntryIsValid свойствам booleans в вашей PageModel, то есть IsEmailValid. А затем в вашем PageModel есть boolean IsFormValid, к которому вы привязываете свою кнопку следующим образом: <Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" IsEnabled="{Binding IsFormValid}" />.

Также вам необходимо реализовать IPropertyChanged на странице PageModel или использовать Fody.PropertyChanged, чтобы сделать вашу жизнь проще.

Смежные вопросы