У меня есть форма в моем приложении, и я использую поведение для проверки на стороне клиента. Я хочу передать значение в поведение для max Validatior.
Значение хранится в моей модели ViewModel, и я попытался передать значение в поведение, но оно передает ноль в поведение, а не значение. Я пробовал использовать hardcoded значение, и это работает нормально.Параметр прохождения в поведение форм Xamarin
Мой вопрос:
Возможно ли, что свойство ViewModel будет передано в поведение?
XAML:
<Entry Text="{Binding EventSubscription.Attendees, Mode=TwoWay }" WidthRequest="50" x:Name="attendees" >
<Entry.Behaviors>
<behaviours:NullEntryValidationBehaviour x:Name="GroupValidator"/>
<behaviours:MaxAttendeesValidationBehaviour Max="{Binding EventSubscription.RemainingPlaces, Mode=TwoWay}"/>
</Entry.Behaviors>
</Entry>
C# Поведение:
public class MaxAttendeesValidationBehaviour : Behavior<Entry>
{
public static BindableProperty IntProperty = BindableProperty.Create<MaxAttendeesValidationBehaviour, string>(tc => tc.MaxAttendeesAllowed, string.Empty, BindingMode.TwoWay);
public string MaxAttendeesAllowed
{
get
{
return (string)GetValue(IntProperty);
}
set
{
SetValue(IntProperty, value);
}
}
protected override void OnAttachedTo(Entry bindable)
{
bindable.TextChanged += HandleTextChanged;
base.OnAttachedTo(bindable);
}
void HandleTextChanged(object sender, TextChangedEventArgs e)
{
bool IsValid = false;
if (!string.IsNullOrEmpty(e.NewTextValue))
{
IsValid = true;//Int32.Parse(e.NewTextValue) <= MaxAttendeesAllowed;
}
((Entry)sender).TextColor = IsValid ? Color.Default : Color.Red;
}
protected override void OnDetachingFrom(Entry bindable)
{
bindable.TextChanged -= HandleTextChanged;
base.OnDetachingFrom(bindable);
}
}
той же проблема возникает, когда свойство Bindable всегда 0. Для по какой-то причине свойство не передается поведению – whiskeycoder