我已经创建了一个几乎没有自定义验证的模型。这些自定义验证我已通过以下代码注释了属性
[CustomValidation(typeof(ItemmasterModel), "ValueTextMaxLenghtValidate")]
public decimal Valuetextmaxlength
{
get
{
return _Valuetextmaxlength;
}
set
{
ValidateProperty("Valuetextmaxlength",value);
_Valuetextmaxlength = value;
RaisePropertyChanged(() => Valuetextmaxlength);
}
}
public static ValidationResult ValueTextMaxLenghtValidate(object obj, ValidationContext context)
{
var itmmstr = (ItemmasterModel)context.ObjectInstance;
if (itmmstr.SelectedValuetypeDd != null)
{
string vtype = itmmstr.SelectedValuetypeDd.Key.ToString();
if (vtype.Equals("C"))
{
if (itmmstr.SelectedItemValueCodeTypesDd != null)
{
string vcode = itmmstr.SelectedItemValueCodeTypesDd.Key.ToString();
if (vcode.Equals("T"))
{
if (itmmstr.Valuetextmaxlength == null || itmmstr.Valuetextmaxlength == 0)
{
return new ValidationResult("Value Max Length is not Entered",
new List<string> { "Valuetextmaxlength" });
}
}
}
}
else if (vtype.Equals("T"))
{
if (itmmstr.Valuetextmaxlength == null || itmmstr.Valuetextmaxlength == 0)
{
return new ValidationResult("Value Max Length is not Entered",
new List<string> { "Valuetextmaxlength" });
}
}
}
return ValidationResult.Success;
}
现在这个验证码依赖于其他属性。 scenerio当用户从下拉列表中选择一个值时,它会自动选中一个复选框,用户也应该在texbox中输入值。
问题:
验证工作正常。复选框是第一次被选中,然后它也会出现错误弹出窗口。 直到用户没有对此复选框或texbox进行更改它只有错误。 1次说它已经输入了错误均值。即使在最终完整对象验证期间,用户还没有输入任何内容,它会再次出现错误。
为什么这种模糊性正在发生。怎么解决这个问题。 需要更多代码让我知道。我发布了。代码在Silverlight 5,MVVM Light
中答案 0 :(得分:0)
在我的自定义验证期间,我使用的是ValidateProperty(&#34; Valuetextmaxlength&#34;,value);在设置属性的值之前所以它给了我一个问题,但是我先设置了值然后使用我的ValidateProperty(&#34; Valuetextmaxlength&#34;,value);一切顺利。我仍然不知道原因,但它对我有用。