我需要知道如何访问我的视图模型中这些行为的IsValid属性。
我希望您告诉我一个更强大的行为,因为它们是从头开始制作的,我想使用一些NuGet包来进行更强大的验证,尽管我对Xamarin Forms还很陌生。
这是我的行为,但我无法访问我的视图模型中的“IsValid”属性:
我希望您告诉我一个更强大的行为,因为它们是从头开始制作的,我想使用一些NuGet包来进行更强大的验证,尽管我对Xamarin Forms还很陌生。
这是我的行为,但我无法访问我的视图模型中的“IsValid”属性:
public class MesesTrabalhadosValidatorBehavior : Behavior<Entry>
{
private static readonly BindablePropertyKey IsValidPropertyKey = BindableProperty.CreateReadOnly("IsValid", typeof(bool), typeof(MesesTrabalhadosValidatorBehavior), false);
public static readonly BindableProperty IsValidProperty = IsValidPropertyKey.BindableProperty;
public bool IsValid
{
get { return (bool)base.GetValue(IsValidProperty); }
private set { base.SetValue(IsValidPropertyKey, value); }
}
private void bindable_TextChanged(object sender, TextChangedEventArgs e)
{
double result;
double.TryParse(e.NewTextValue, out result);
IsValid = result > 0;
((Entry)sender).TextColor = IsValid ? Color.Green : Color.Red;
}
protected override void OnAttachedTo(Entry bindable)
{
bindable.TextChanged += bindable_TextChanged;
}
protected override void OnDetachingFrom(Entry bindable)
{
bindable.TextChanged -= bindable_TextChanged;
}
}
我的观点:
<Entry Placeholder="Mêses trabalhados" Text="{Binding MesesTrabalhados}" Keyboard="Numeric">
<Entry.Behaviors>
<local:MesesTrabalhadosValidatorBehavior />
</Entry.Behaviors>
</Entry>
<Entry Placeholder="Último salário" Text="{Binding Salario}" Keyboard="Numeric">
<Entry.Behaviors>
<local:SalarioValidatorBehavior />
</Entry.Behaviors>
</Entry>
<ContentView Padding="0,20,0,0">
<Button Text="Calcular" HorizontalOptions="Fill" IsEnabled="{Binding IsValid}" Command="{Binding CalcularFgtsCommand, Mode=TwoWay}"/>
</ContentView>