اگر با دیتا گرید*های WPF کار کرده باشید، به این مساله برخورد کرده اید که وقتی روی یک سلول از دیتا گرید Validaion اعمال شده باشد و آن سلول مقدار نامعتبر داشته باشد،امکان ویرایش سایر ردیف*ها و سلول*ها وجود ندارد.در بعضی مواقع نیاز است که این رفتار دیتا گرید غیر فعال شود.یکی از راه هایی که می*توان این کار را انجام داد Override کردن متد OnCanExecuteBeginEdit مربوط به دیتا گرید و تغییر مقدار CanExecute در صورت Invalid بودن سلول*ها است.

protected override void OnCanExecuteBeginEdit(System.Windows.Input.CanExecuteRoutedEventArgs e)
{
var hasCellValidationError = false;
var hasRowValidationError = false;
const BindingFlags bindingFlags =
BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance;
//Current cell
var cellErrorInfo = this.GetType().BaseType.GetProperty("HasCellValidationError", bindingFlags);
//Grid row
var rowErrorInfo = this.GetType().BaseType.GetProperty("HasRowValidationError", bindingFlags);
if (cellErrorInfo != null) hasCellValidationError = (bool) cellErrorInfo.GetValue(this, null);
if (rowErrorInfo != null) hasRowValidationError = (bool) rowErrorInfo.GetValue(this, null);
base.OnCanExecuteBeginEdit(e);
if ((!e.CanExecute && hasCellValidationError) || (!e.CanExecute && hasRowValidationError))
{
e.CanExecute = true;
e.Handled = true;
}
}