CustomValidation批注事件提升问题MVVM Silverlight 5

时间:2014-10-01 19:20:46

标签: silverlight mvvm-light

我已经创建了一个几乎没有自定义验证的模型。这些自定义验证我已通过以下代码注释了属性

 [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

1 个答案:

答案 0 :(得分:0)

在我的自定义验证期间,我使用的是ValidateProperty(&#34; Valuetextmaxlength&#34;,value);在设置属性的值之前所以它给了我一个问题,但是我先设置了值然后使用我的ValidateProperty(&#34; Valuetextmaxlength&#34;,value);一切顺利。我仍然不知道原因,但它对我有用。