行为和触发器

时间:2016-08-19 13:55:21

标签: xamarin xamarin.forms

我有一个简单的登录表单,其中包含两个字段username和pass。使用行为我实现了电子邮件验证(非空,有效的电子邮件)并通过验证(非空)

             <StackLayout Padding="30" VerticalOptions="CenterAndExpand" Spacing="15">
                    <Entry Text="{Binding Email}" Keyboard="Email" IsEnabled="{Binding IsNotBusy}" Placeholder="Email address">
                        <Entry.Behaviors>
                            <local:EntryValidatorBehavior IsCheckEmail="true" ValidateFromStart="false" IsCheckEmpty="true" x:Name="emailValidator" />
                        </Entry.Behaviors>
                    </Entry>
                    <Label Text="{Binding Source={x:Reference emailValidator}, Path=Message}" />
                    <Entry Text="{Binding Password}" IsPassword="true" IsEnabled="{Binding IsNotBusy}" Placeholder="Password">
                        <Entry.Behaviors>
                            <local:EntryValidatorBehavior ValidateFromStart="false" IsCheckEmpty="true" x:Name="passwordValidator">
                            </local:EntryValidatorBehavior>
                        </Entry.Behaviors>
                    </Entry>
                    <Label Text="{Binding Source={x:Reference passwordValidator}, Path=Message}" />
                    <StackLayout Orientation="Horizontal">
                        <Button Text="Forgot Password?" Command="{Binding ForgotButton}" TextColor="White" HeightRequest="40" VerticalOptions="End">
                        </Button>
                        <Button HorizontalOptions="EndAndExpand" Text="Sign In" Command="{Binding LoginButton}" TextColor="White" BackgroundColor="#f50057" HeightRequest="40" WidthRequest="100">
                        </Button>
                    </StackLayout>
                </StackLayout>

这很有效,但在表单的底部我有一个Login按钮,只要电子邮件和密码都无效就应该隐藏。

如何实施?我正在考虑使用触发器

<Button HorizontalOptions="EndAndExpand" Text="Sign In" Command="{Binding LoginButton}" TextColor="White" BackgroundColor="#f50057" HeightRequest="40" WidthRequest="100" IsVisible="false">
                        <Button.Style>
                            <Style TargetType="Button">
                                <Style.Triggers>
                                    <MultiTrigger TargetType="Button">
                                        <MultiTrigger.Conditions>
                                            <BindingCondition Binding="{Binding Source={x:Reference emailValidator}, Path=IsValid}" Value="True" />
                                            <BindingCondition Binding="{Binding Source={x:Reference passwordValidator}, Path=Text.IsValid}" Value="True" />
                                        </MultiTrigger.Conditions>
                                        <Setter Property="IsVisible" Value="True" />
                                    </MultiTrigger>
                                </Style.Triggers>
                            </Style>
                        </Button.Style>
                    </Button>

但这不起作用。

提前致谢!

0 个答案:

没有答案