Наконец-то нашли простое решение ... Пожалуйста, дайте мне знать, если у кого-то есть более эффективный способ сделать это:)
private void Validate()
{
ValidationContext validationContext = new ValidationContext(this, null, null);
ICollection vr = new List();
Validator.TryValidateObject(this, validationContext, vr, true);
if (vr.Count >= 1)
{
foreach (var item in vr)
{
ManageErrors(((string[])item.MemberNames)[0], new List() { item.ErrorMessage }, true);
}
}
}
Метод управления ошибками - это простая реализация INotifyDataErrorInfo, которую Джесси Либерти сделал здесь
любыми способами теперь, когда мой метод submit вызывается (используя mvvm-light) в моей viewModel, я вызываю это и блокирую все свойства, проверенные с использованием простых dataAnnotations
т.е.
[Required(ErrorMessage = "Is Required", AllowEmptyStrings = false)]
public string SelectedStatus
{
get { return _selectedStatus; }
set
{
_selectedStatus = value;
RaisePropertyChanged("SelectedStatus");
}
}
Не самый элегантный способ сделать это, но ... боже, я не смог найти никого, кто бы подтвердил отправку!?!?