2015-05-11 4 views
0

Есть ли способ добавить пользовательские ошибки проверки в список ошибок управления? Я знаю, как использовать IDataErrorInfo, INotifyErrorInfo, ValidationAttribute и т. Д., Но я хотел бы добавить собственные ошибки проверки из кода.Добавить пользовательские ошибки проверки в Silverlight

ответ

0

Найден способ:

  1. Во-первых, создать общественный класс для затаив сообщение об ошибке:

    общественного класса TagModelError { частные чтения Строка ErrorMessage;

    public TagModelError(String errorMessage) 
        { 
         this.errorMessage = errorMessage; 
        } 
    
        public Object Tag 
        { 
         get 
         { 
          return new Object(); 
         } 
         set 
         { 
          throw new ValidationException(this.errorMessage); 
         } 
        } 
    } 
    
  2. Далее создайте вспомогательный метод:

    государственной статической силы AddValidationError (этот элемент управления, String ErrorMessage) { выражение вар = elm.GetBindingExpression (FrameworkElement.TagProperty);

    if (expression == null) 
        { 
         expression = control.SetBinding(FrameworkElement.TagProperty, new Binding("Tag") 
         {    
          Mode = BindingMode.TwoWay, 
          ValidatesOnExceptions = true, 
          UpdateSourceTrigger = UpdateSourceTrigger.Explicit, 
          Source = new TagModelError(errorMessage) 
         }) as BindingExpression; 
        } 
    
        expression.UpdateSource(); 
    } 
    

Я использую Tag свойство, потому что это редко требуется, но вы можете использовать любой другой. Трюк здесь заключается в том, чтобы вызвать исключение при обращении к модели.

+0

Невозможно форматировать код ... –