我有一个有3-4个输入控件的页面。我创建了一个验证这些条目的行为。我还扩展了入门级,有边框,边框颜色和边框半径。所以Xaml就像这样
<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 Behavior具有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}"/>
答案 0 :(得分:3)
我不认为您可以在Button
<Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" BindingContext="{x:Reference EmailAddressValidator,PasswordValidator,AddressValidator}"
中执行此操作,但为什么不在PageModel中为您创建一个布尔值?
将您的ExtendedEntry
IsValid
属性绑定到PageModel中的布尔值,即IsEmailValid
。然后在你的PageModel中一个布尔IsFormValid
,你的按钮就像这样绑定<Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" IsEnabled="{Binding IsFormValid}" />
。
您还需要在PageModel上实施IPropertyChanged
或使用Fody.PropertyChanged让您的生活更轻松。