2016-11-30 12 views
0

複数のエントリを持つListViewがあります。それぞれ、私は別の値と比較される値を入力する必要があります(値がより大きいか等しい場合に有効です)。 Submitボタンをタップすると、ListViewのすべてのエントリが有効かどうかを確認できるソリューションを実装する必要があります。Xamarin。ボタンをクリックしてListView内のエントリ値を検証する方法

私はビヘイビアを使用して一種の検証を実装しましたが、有効でないときにエントリ値をハイライト表示し、ボタンには影響しません。

<ListView x:Name="lstRegistadores" ItemsSource="{Binding Contador.Registadores}"> 
    <ListView.ItemTemplate> 
     <DataTemplate> 
      <ViewCell> 
       <Entry x:Name="txtValue" Text="{Binding Corrente.Valor}" > 
        <Entry.Behaviors> 
         <local:RegistadorValidatorBehavior /> 
        </Entry.Behaviors> 
       </Entry>             
      </ViewCell> 
     </DataTemplate> 
    </ListView.ItemTemplate> 
</ListView> 
<Button x:Name="btnSubmit" Text="Confirmar" /> 
public class RegistadorValidatorBehavior : Behavior<Entry> 
    { 
     static readonly BindablePropertyKey IsValidPropertyKey = BindableProperty.CreateReadOnly("IsValid", typeof(bool), typeof(RegistadorValidatorBehavior), false); 

     public static readonly BindableProperty IsValidProperty = IsValidPropertyKey.BindableProperty; 

     public bool IsValid 
     { 
      get { return (bool)base.GetValue(IsValidProperty); } 
      private set { base.SetValue(IsValidPropertyKey, value); } 
     } 

     protected override void OnAttachedTo(Entry bindable) 
     { 
      bindable.TextChanged += HandleTextChanged; 
      base.OnAttachedTo(bindable); 
     } 

     protected override void OnDetachingFrom(Entry bindable) 
     { 
      bindable.TextChanged -= HandleTextChanged; 
      base.OnDetachingFrom(bindable); 
     } 

     void HandleTextChanged(object sender, TextChangedEventArgs e) 
     { 
      var entry = sender as Entry; 
      var registador = (Registador)entry.BindingContext; 
      var compareTo = registador.Ultimo.Valor; 

      int valor; 


      IsValid = (int.TryParse(e.NewTextValue,out valor) && valor >= compareTo) ; 

      entry.TextColor = IsValid ? Color.Default : Color.Red; 
     } 
    } 

誰も私に進むべき道を示すことができますか?

答えて

0

FluentValidationを確認し、Contador.Registadoresにお尋ねください。

FluentValidationは、Xamarinで非常にうまく機能する重要なライブラリの1つです。

この記事ではFluetValidationは、あなたがあなたの全体のリストや複雑なサブプロパティをチェックすることができますどのようにあなたの洞察力を与える必要があります。

https://github.com/JeremySkinner/FluentValidation/wiki/b.-Creating-a-Validator

関連する問題