简介:
ValidationRule提供检查输入的有效性。可用于数据校验,错误提示。 例如检查TextBox控件输入的数值。
介绍:
ValidationResult | 如果值无效,则返回的 ErrorContent 属性和 IsValid 属性将 ValidationResult 分别设置为相应的错误消息false。 |
ValidatesOnTargetUpdated | 获取或设置一个值,该值指示当 Binding 的目标更新时是否运行验证规则。 |
NotifyOnValidationError | 获取或设置一个值,该值指示是否对绑定对象引发 Error 附加事件。 |
使用:
- ValidatesOnTargetUpdated 设置为true
,当
Slider控件的数值无效时,绑定到Slider的TextBox控件会有红框提示。- NotifyOnValidationError设置为true,当TextBox收到的数据无效时,引发 Error 附加事件,可加入ToolTip。
public class RangeValidationRule:ValidationRule
{
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
double d = 0;
if (double.TryParse(value.ToString(), out d))
{
if (d >= 0 && d <= 100)
{
return new ValidationResult(true, null);
}
}
return new ValidationResult(false,"Validation Failed");
}
}
private void TextBox_Error(object sender, ValidationErrorEventArgs e)
{
if (Validation.GetErrors(sender as TextBox).Count > 0)
{
(sender as TextBox).ToolTip = Validation.GetErrors(sender as TextBox)[0].ErrorContent.ToString();
}
}
<Grid>
<StackPanel>
<Slider x:Name="slider" Maximum="1000"></Slider>
<TextBox Validation.Error="TextBox_Error">
<TextBox.Text>
<Binding ElementName="slider" Path="Value" UpdateSourceTrigger="PropertyChanged" NotifyOnValidationError="True">
<Binding.ValidationRules>
<local:RangeValidationRule ValidatesOnTargetUpdated="True"/>
</Binding.ValidationRules>
</Binding>
</TextBox.Text>
</TextBox>
</StackPanel>
</Grid>
效果: