Я запускаю новое приложение WPF MVVM и пытаюсь понять, как обрабатывать валидацию «лучше, чем раньше» - до того, как я использовал IDataErrorInfo
для модели и viewModel. Это работало нормально, но потом было трудно расширяться, и в большинстве случаев требовалось много проводов. Я уверен, что IDataErrorInfo
по-прежнему является хорошим способом подключения валидации ViewModel, но я хотел бы попробовать Enterprise Library для проверки модели, но есть ли способ фактически проверять одно свойство за раз вместо целый объект?
Или есть какой-то другой умный способ использовать конфигурацию, сгенерированную EL?
Есть идеи или другие предложения?
UPDATE
Мне кажется, я нашел что-то более или менее то, что искал:
(от http://entlib.codeplex.com/discussions/233057)
Type type = typeof(Customer);
PropertyInfo property = type.GetProperty("Name");
string ruleset = string.Empty;
var source = ValidationSpecificationSource.All;
var builder = new ReflectionMemberValueAccessBuilder();
Validator validator =
PropertyValidationFactory.GetPropertyValidator(
type, property, ruleset, source, builder);
ValidationResults results = validator.Validate(customer);
Но это будет означать, что мой ViewModel
должен работать с экземпляром модели, а не делать что-то вроде:
private string name;
public string Name
{
get { ... }
set { ...}
}
Похоже, мне нужно работать с экземпляром модели или проверять на уровне ViewModel
- чего я надеялся избежать.
... или я упускаю что-то действительно известное и очевидное для большинства людей ...?
Любые предложения приветствуются.