好的,所以我尝试创建ValidationRule
以确保项目的设置宽度在该项目的给定范围内。这是我的尝试:
public class AdjustWidthValidationRule : ValidationRule
{
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
double dValue = (double)value;
if (dValue < ??? || dValue > ???)
return new ValidationResult(false, "Width is out of range!");
return new ValidationResult(true, null);
}
}
好的,现在我怎么知道我应该验证哪个元素?这似乎只支持硬编码验证规则,似乎没有任何实际使用;你需要一个上下文来验证。我不明白吗?这是针对人的年龄和场长吗?我应该提供静态状态机吗?这是1990年代的吗?我很沮丧。
答案 0 :(得分:2)
作为替代方案,您可以在数据验证中使用IDataErrorInfo。 这是一个线程: Exception validating data with IDataErrorInfo with a MVVM implementation
答案 1 :(得分:0)
验证您获得的“value”对象作为参数。你应该知道这是什么类型的对象。要使其更可重用且不使用硬编码值,可以在AdjustWidthValidationRule类中定义属性,如:
public class AdjustWidthValidationRule : ValidationRule
{
public double Max { get; set; }
public double Min { get; set; }
public override ValidationResult Validate(object value, System.Globalization.CultureInfo cultureInfo)
{
double dValue = (double)value;
if (dValue < Min || dValue > Max)
return new ValidationResult(false, "Width is out of range!");
return new ValidationResult(true, null);
}
}
并且您可以在xaml(或创建ValidationRule的位置)中为Max和Min赋值。