繁体   English   中英

Xamarin表格验证。 汇总多种控制行为的结果

[英]Xamarin Forms Validation. Aggregate the result from multiple control behaviors

我有一个包含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}"/>

我认为您无法在您的Button <Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" BindingContext="{x:Reference EmailAddressValidator,PasswordValidator,AddressValidator}"但为什么不在其中创建布尔值您的PageModel哪个适合您?

将您的ExtendedEntry IsValid属性绑定到PageModel中的布尔值,即IsEmailValid 然后在您的PageModel中,将一个boolean IsFormValid绑定到您的按钮,如下所示: <Button Command="{Binding OnCreateCommand}" Text="Submit Account Application" IsEnabled="{Binding IsFormValid}" />

另外,您还需要在PageModel上实现IPropertyChanged或使用Fody.PropertyChanged简化生活。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM