J'ai un problème avec le PropertyComparisonValidator de EntLib 5.0. J'ai mis en place un formulaire simple avec un champ Min et un Max. La validation est: lorsque Min> = Max les deux propriétés ne sont pas valides.WPF, EntLib: PropertyComparisonValidator ne met pas à jour l'interface utilisateur de la valeur comparée
[RangeValidator(10, RangeBoundaryType.Inclusive, 100,
RangeBoundaryType.Inclusive)]
[PropertyComparisonValidator("MinVal", ComparisonOperator.GreaterThanEqual,
MessageTemplate = @"Min cannot be greater or equal to Max")]
[Required(ErrorMessage = @"MaxVal is required")]
public int MaxVal
{
get { return (int)this.GetValue(MaxValProperty); }
set { this.SetValue(MaxValProperty, value); }
}
[RangeValidator(1, RangeBoundaryType.Inclusive, 100,
RangeBoundaryType.Inclusive)]
[PropertyComparisonValidator("MaxVal", ComparisonOperator.LessThanEqual,
MessageTemplate = @"Max cannot be less or equal to Min")]
[Required(ErrorMessage = @"MinVal is required")]
public int MinVal
{
get { return (int)this.GetValue(MinValProperty); }
set { this.SetValue(MinValProperty, value); }
}
Le XAML:
<TextBox x:Name="txtMinVal" Margin="0,0,5,0" TextWrapping="Wrap" Text="{Binding MinVal, ValidatesOnDataErrors=true, NotifyOnValidationError=true, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" VerticalAlignment="Center" Grid.Row="1"
/>
<Label x:Name="lblMinVal" Content="Min Value" Margin="5,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="1"/>
<TextBox x:Name="txtMaxVal" Margin="0,0,5,0" TextWrapping="Wrap" Text="{Binding MaxVal, ValidatesOnDataErrors=true, NotifyOnValidationError=true, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}" Grid.Column="1" VerticalAlignment="Center" Grid.Row="2"
/>
<Label x:Name="lblMaxVal" Content="Max Value" Margin="5,0,0,0" VerticalAlignment="Center" HorizontalAlignment="Left" Grid.Row="2"/>
<Button x:Name="btnSave" Content="Save" Margin="0" Grid.Row="3" Grid.ColumnSpan="3" HorizontalAlignment="Center" VerticalAlignment="Center" IsEnabled="{Binding IsValid}"/>
Le problème est l'interface utilisateur. Si je saisis Min = 5 et Max = 4 alors les deux sont invalides et marqués d'une bordure rouge. MAIS si je mets à jour Min = 3 -> les deux shold sont corrects. Vérification de la validation, elle renvoie NO ERROR et est parfaite. -> Mais l'interface reste toujours rouge pour Max. Seul Min sera mis à jour, car ce champ possédait un PropertyChanged.
Existe-t-il un exemple Min Max avec EntLib pour WPF?
Merci. Michele