Знаете ли вы, как проверить исключение в WPF 4.5 с помощью INotifyDataErrorInfo - PullRequest
1 голос
/ 03 апреля 2012

Мое сомнение простое, как я могу показать исключение, используя этот INotifyDataErrorInfo в WPF 4.5?

Я использую MVVM:

Вот часть моего взгляда

    <TextBox MinHeight="50"
             Text="{Binding Person.Name, Mode=TwoWay, NotifyOnValidationError=True, ValidatesOnExceptions=True}"

А вот и мой модельный класс. Проверьте метод Validate, где я устанавливаю символ @, должен выдать исключение

public class Person : DomainObject
{
    private string _name;

    public string Name
    {
        get
        {
            return this._name;
        }

        set
        {
            if (this._name != value)
            {
                this.ValidateProperty("Name", value);
                this._name = value;
                this.RaisePropertyChanged("Name");
            }
        }
    }
}

    protected override void ValidateProperty(string propertyName, object value)
    {
        if (propertyName == "Name")
        {
            var errors = new List<string>();

            var response = value as string;

            if (string.IsNullOrEmpty(response))
            {
                errors.Add("The value cannot be null or empty");
            }
            else if (response == "@")
            {
                throw new Exception("@");
            }

            this.ErrorsContainer.SetErrors(propertyName, errors);
        }
        else
        {
            base.ValidateProperty(propertyName, value);
        }
    }

Когда это происходит, это действительно останавливает программы .. И, насколько мне известно, в Silverlight такого не бывает.

1 Ответ

1 голос
/ 03 апреля 2012

Вы, вероятно, используете свой установщик где-то еще, кроме привязок (и вы не ловите исключение).

Вам необходимо запустить приложение в режиме отладки.Visual Studio покажет вам помощник по исключениям, когда возникнет исключение.

Тогда вы сможете проанализировать трассировку стека и посмотреть, как ваша программа вызывает этот код.

Если это не решит вашу проблему, обновите ваш вопрос трассировкой стека:исключение (Visual Studio называет это «Необработанное исключение»), которое приводит к остановке вашей программы.

...