Validation 结束编辑时Silverlight Datagrid验证

Validation 结束编辑时Silverlight Datagrid验证,validation,silverlight-4.0,datagrid,Validation,Silverlight 4.0,Datagrid,我需要对网格列进行验证。该列中的所有单元格均为空。用户需要输入数据,然后我需要验证它 目前,我已经对单元格进行了验证,但它对开始编辑事件有效,而不是结束编辑事件有效。这是毫无意义的,因为验证需要检查他们是否输入了信息 如何在结束编辑事件时获得要验证的验证 提前感谢你的帮助 尼文 代码: 我刚刚用下面的自定义代码解决了这个问题。我还没有时间测试所有的场景,但是我对结果很有信心 public class ExtendedDataGrid : DataGrid { private Valida

我需要对网格列进行验证。该列中的所有单元格均为空。用户需要输入数据,然后我需要验证它

目前,我已经对单元格进行了验证,但它对开始编辑事件有效,而不是结束编辑事件有效。这是毫无意义的,因为验证需要检查他们是否输入了信息

如何在结束编辑事件时获得要验证的验证

提前感谢你的帮助

尼文

代码:


我刚刚用下面的自定义代码解决了这个问题。我还没有时间测试所有的场景,但是我对结果很有信心

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);
    }
}

我刚刚用下面的自定义代码解决了这个问题。我还没有时间测试所有的场景,但是我对结果很有信心

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);
    }
}

您可以向我们展示您已经进行的BeginEdit验证吗?已更新。这有帮助吗?你能告诉我们你已经进行的BeginEdit验证吗?已更新。这有用吗?