0
私は自分のアプリケーションにフォームを持っており、クライアント側の検証にビヘイビアを使用しています。 最大Validatiorの動作に値を渡したいと思います。
値は私のViewModelに保存されていますが、その値をビヘイビアに渡そうとしましたが、値ではなくビヘイビアに0が渡されました。 ハードコードされた値を使用しようとしましたが、正常に動作します。パラメータを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);
}
}
バインド可能なプロパティでは常に0になります。どこに同じ問題が発生しますプロパティがビヘイビアに渡されていない何らかの理由 – whiskeycoder