Извинения для кросс проводки (я спросил это на Silverlight Forum, но не получил никакого ответа)Silverlight 3 Validation - ручная проверка не работает?
У меня есть объект, который я пытаюсь использовать проверки на так что я украсили свойство, как так:
[Required]
[StringLength(10)]
public string Code
{
get
{
return this.code;
}
set
{
if (this.code != value)
{
this.code = value;
this.SendPropertyChanged("Code");
}
}
}
У меня есть список этих объектов, привязанных к сетке. Если я помещаю пустую запись, она показывает ошибку проверки. Если я добавлю слишком длинный код, я получаю ошибку проверки. Отлично! За исключением ...
Я хочу, чтобы быть в состоянии остановить пользователя от сохранения лица, так что я добавил следующее к моему лицу:
public bool IsValid()
{
try
{
this.Validate();
}
catch
{
return false;
}
return true;
}
public void Validate()
{
var ctx = new ValidationContext(this, null, null);
Validator.ValidateObject(this, ctx);
}
И когда я иду, чтобы спасти я называю IsValid метод на каждом объект, а не сохранять, если он ложный. Это отлично работает для требуемого атрибута (он не будет сохранять, если код пуст), но не для StringLength (я могу сохранить с любым кодом длины).
Я воспроизвел это в простом проекте здесь:
http://walkersretreat.co.nz/files/Slvalidation.zip
Может кто-нибудь помочь?
Спасибо!
Марк