2016-10-01 26 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屬性綁定到PageModel中的布爾值,即IsEmailValid。然後在你的PageModel中布爾IsFormValid你的按鈕像這樣綁定到:<Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" IsEnabled="{Binding IsFormValid}" />

此外,您還需要在PageModel上實現IPropertyChanged或使用Fody.PropertyChanged以使您的生活更輕鬆。