private List<string> Validate(ValidatableViewModel vm)
{
if (vm == null)
{
throw new ArgumentNullException("vm");
}
var result = ValidateCore();
result.AddRange(from item in _validationAttributeDictionary
let value = item.Key.GetValue(vm, null)
from validationItem in item.Value
select validationItem.Validate(this, value)
into error
where !string.IsNullOrEmpty(error)
select error);
return result;
}