EntLib 5.0의 PropertyComparisonValidator에 문제가 있습니다. 최소 및 최대 필드가있는 간단한 양식을 설정했습니다. 유효성 검사는 다음과 같습니다. Min> = Max 인 경우 두 속성이 모두 유효하지 않습니다.WPF, EntLib : PropertyComparisonValidator가 비교 된 값의 UI를 업데이트하지 않습니다.
[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); }
}
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}"/>
문제는 UI이다. Min = 5 및 Max = 4를 입력하면 둘 다 유효하지 않고 빨간색 테두리로 표시됩니다.
하지만 Min = 3 -> 두 가지를 모두 업데이트하면 정확합니다. 유효성 검사를 확인하면 NO ERROR를 리턴하며 완벽합니다. ->하지만 Max는 여전히 UI가 빨간색으로 유지됩니다. 이 필드에는 PropertyChanged가 있기 때문에 Min 만 업데이트됩니다.
WPF 용 EntLib에서 작동하는 Min Max 예제가 있습니까?
감사합니다. Michele