Блок проверки WPF + MVVM + Enterprise Library - PullRequest
1 голос
/ 21 июня 2011

Я запускаю новое приложение 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 - чего я надеялся избежать.

... или я упускаю что-то действительно известное и очевидное для большинства людей ...?

Любые предложения приветствуются.

...