Silverlight ValidationSummary не обрабатывает ValidationException - PullRequest
1 голос
/ 03 февраля 2011

У меня есть форма данных и сетка данных в форме данных. эта сетка данных связана с коллекцией ObservableCollection. Я написал CustomValidator, который выдает исключение ValidationException, когда счетчик в наблюдаемой коллекции равен 0. Элемент управления ValidationSummary не обрабатывает это исключение, вместо этого приложение становится нестабильным и вызывает Application Unhandled Exception. Я не пользуюсь услугами RIA. Ниже мой код

public class UserCompanyProgram : INotifyPropertyChanged
{
    public void ToWebServiceProgram()
    {
        lstUserProgram.CollectionChanged += (sender, e) =>
        {
            //Validator.ValidateProperty(lstUserProgram,
            //             new ValidationContext(this, null, null) { MemberName = "lstUserProgram" });
            lstUserProgram = _lstUserProgram;
            UserProgramChanged();
        };
    }
    private ObservableCollection<Pricing.Model.UserProgram> _lstUserProgram = new ObservableCollection<UserProgram>();
    [CustomValidation(typeof(ModelValidator), "ValidateUserProgramCollection")]
    [Display(Name = "New Programs", Description = "Add program")]
    public ObservableCollection<UserProgram> lstUserProgram
    {
        get { return _lstUserProgram; }
        set
        {
                Validator.ValidateProperty(lstUserProgram,
                new ValidationContext(this, null, null) { MemberName = "lstUserProgram" });
                this._lstUserProgram = value;
                NotifyPropertyChanged("lstUserProgram");

        }
    }
}

  dgSelectedPrograms.SetBinding(DataGrid.ItemsSourceProperty, new Binding("lstUserProgram") { ValidatesOnNotifyDataErrors=true, ValidatesOnExceptions=true });

Как сделать, чтобы ValidationSummary обрабатывал исключение?

1 Ответ

0 голосов
/ 08 августа 2011

У меня была похожая проблема в моем проекте, когда я принудительно проверял событие keyup текстового поля. Я устанавливал свойство привязки текстового поля к тексту из текстового поля в событии keyup, чтобы я мог проверять, как они печатались. Silverlight не нравится это. Это было необработанное исключение. Поэтому, как только я удалил проверку из события keyup, все заработало как надо. Свойство не обновляется, пока пользователь не выберет другой элемент управления на экране, но если я хочу воспользоваться проверкой Silverlight, это то, что нужно сделать.

Я не работал с проверкой коллекции, такой как то, что вы делаете, но, возможно, в таких случаях вам нужно использовать реализацию IDataErrorInfo. В этом случае исключение не выдается, так что это, вероятно, путь.

...