WPF数据绑定中的值转换和数据验证
WPF提供一种机制确保用户的输入符合预期的结果,如果不符合,用户界面以一种反馈的方式提示错误原因
- 数据转换
自定义数据转换的类,继承接口IValueConverter,重写Convert和ConvertBack函数
public class AgeToForegroundConverter : IValueConverter
{
public object Convert(object value, Type targetType, object parameter, CultureInfo culture)
{
if (targetType != typeof(Brush)) { return null; }
int age = int.Parse(value.ToString());
return (age < 18 ? Brushes.Red : Brushes.Black);
}
public object ConvertBack(object value, Type targetType, object parameter, CultureInfo culture)
{
throw new NotImplementedException();
}
}
- 自定义数据验证类
确定数据源范围规则逻辑,继承类ValidationRule,并返回ValidationResult.ValidResult的值
public class NumberRangeRule : ValidationRule
{
public int Min { get; set; }
public int Max { get; set; }
public override ValidationResult Validate(object value, CultureInfo cultureInfo)
{
int number;
if (!int.TryParse((string)value,out number))
{
return new ValidationResult(false, "非字符型数值");
}
if (number<Min|| number>Max)
{
string notify = string.Format("超出正常人的年龄范围{0}-{1}", Min, Max);
return new ValidationResult(false, notify);
}
return ValidationResult.ValidResult;
}
}
- ToolTip提示信息
TooTip提示信息作为大部分控件都具有的属性,通过绑定设置实现错误信息提示
ToolTip="{Binding RelativeSource={RelativeSource Self},Path=(Validation.Errors)[0].ErrorContent}"
Validation.ErrorTemplate="{StaticResource validationTemplate }"