Сейчас я пытаюсь показать фиктивное сообщение об ошибке: "Error Message"
Я делаю это с помощью следующего кода:
SetControlError(Control c,string errorMsg){
Helper helper = new Helper(errorMsg);
c.SetBinding(Control.TagProperty,new Binding("ValidationError"){
Mode = BindingMode.TwoWay,
NotifyOnValidationError = true,
ValidatesOnExceptions = true,
UpdateSourceTrigger = UpdateSourceTrigger.Explicit,
Source = helper
});
c.GetBindingExpression(Control.TagProperty()).UpdateSource();
}
Мой вспомогательный класс выглядит следующим образом:
public class Helper
{
private string _message;
public Helper(string message)
{
if (message == null)
{
throw new ArgumentNullException("message");
}
_message = message;
ThrowValidationError = true;
}
public bool ThrowValidationError
{
get;
set;
}
public object ValidationError
{
get { return null; }
set
{
if (ThrowValidationError)
{
throw new ValidationException(_message);
}
}
}
}
По сути, я использую tag
в качестве фиктивного свойства и присоединяю к нему ошибку.
Проблема в том, что когда я отлаживаю код, он останавливается наТочка исключения и отобразить его рядом с тем, где он брошен в коде.Однако, даже если для DataAnnotations.ValidationException
не будет User-unhandled
, текстовое поле, которое я передаю в качестве элемента управления, не станет красным, и сообщение не будет отображаться.
Что дает?
Спасибо!