Мне нужно знать, как я могу получить доступ к своей модели представления свойства IsValid этих поведений.Лучшее поведение и достоверность Xamarin Foms
Я бы предпочел, чтобы вы сказали мне более надежное поведение, потому что они сделаны с нуля, я хотел бы сделать более надежную проверку с некоторым пакетом nuget, который уже был усовершенствован, несмотря на то, что он был новым для Xamarin Forms.
Это мое поведение, но я не могу получить доступ к свойству «IsValid» мой ViewModel:
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>
Я не уверен на 100%, но это больше похоже на вопрос об обзоре кода для проверки кода, чем что-либо еще. –