Проверка сетки данных Silverlight при завершении Править - PullRequest
2 голосов
/ 11 ноября 2011

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

В данный момент у меня работает проверка ячеек, но она работает с событием Begin Edit вместо события end edit. что бессмысленно, так как проверка должна проверить, если они ввели информацию.

Как я могу получить подтверждение для подтверждения в конце редактирования события?

Заранее благодарен за помощь

Нивен.

Код:

    private string _reference;
    public string Reference
    {
        get 
        {
            return _reference; 
        }
        set 
        {
            _reference = value;
            ChangeValue("Reference");
        }
    }


        public event PropertyChangedEventHandler PropertyChanged;

        public void ChangeValue(string propName)
        {
            if (PropertyChanged != null)
            {
                PropertyChanged(this, new PropertyChangedEventArgs(propName));
            }
        }
        public string this[string columnName]
        {
            get
            {
                string msg = null;
                if (columnName == "Reference")
                {
                    if (Reference == "" &&  ValidateItem)
                    {
                        msg = "Reference is Required. Please Enter a Reference";
                    }
                }
                return msg;
            }
        }

        string err;
        public string Error
        {
            get { return err; }
        }

1 Ответ

0 голосов
/ 09 января 2014

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

public class ExtendedDataGrid : DataGrid {
    private ValidationSummary _validationSummary = null;
    private bool _validationFilterBehaviorApplied = false;
    private bool _validationFilterBehaviorRestored = false;

    public ExtendedDataGrid() { }

    public override void OnApplyTemplate() {
        base.OnApplyTemplate();

        this._validationSummary = (ValidationSummary)this.GetTemplateChild("ValidationSummary");
    }

    protected override void OnBeginningEdit(DataGridBeginningEditEventArgs e) {
        if (!_validationFilterBehaviorApplied) { 
            _validationSummary.Filter = ValidationSummaryFilters.None;
            _validationFilterBehaviorApplied = true;
        }

        base.OnBeginningEdit(e);
    }

    protected override void OnRowEditEnding(DataGridRowEditEndingEventArgs e) {
        if (_validationFilterBehaviorApplied && !_validationFilterBehaviorRestored) {
            _validationSummary.Filter = ValidationSummaryFilters.All;
            _validationFilterBehaviorRestored = true;
        }

        base.OnRowEditEnding(e);
    }

    protected override void OnRowEditEnded(DataGridRowEditEndedEventArgs e) {
        _validationFilterBehaviorApplied = false;
        _validationFilterBehaviorRestored = false;

        base.OnRowEditEnded(e);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...