我的DataGrid有问题,它将边框标记为红色,错误地输入了单元格。我读到应用
很有用<!------------------------ XAML ------------------------------->
<DataGridTextColumn.EditingElementStyle>
<Style>
<Setter Property="Validation.ErrorTemplate" Value="{x:Null}" />
<!-- no red border round cell-->
</Style>
</DataGridTextColumn.EditingElementStyle>
<!------------------------ XAML ------------------------------->
这是正确的边框是白色的,但我仍然无法编辑DataGrid中的下一个单元格。如何解决这个问题?
答案 0 :(得分:0)
如果这遵循MVVM结构并且如果它重复多次,那么您最好的选择是让您自己的DataGrid
继承自另一个DataGrid
。然后你会覆盖OnCellEditEnding
方法,如:
public class myDataGrid : DataGrid
{
protected override void OnCellEditEnding(DataGridCellEditEndingEventArgs e)
{
e.Cancel = true;
}
}
或者甚至更疯狂的方式是这样的:
protected override void OnCanExecuteBeginEdit(System.Windows.Input.CanExecuteRoutedEventArgs e)
{
var hasCellValidationError = false;
var hasRowValidationError = false;
const BindingFlags bindingFlags =
BindingFlags.FlattenHierarchy | BindingFlags.NonPublic | BindingFlags.Instance;
var cellError= this.GetType().BaseType.GetProperty("HasCellValidationError", bindingFlags);
var rowError = this.GetType().BaseType.GetProperty("HasRowValidationError", bindingFlags);
if (cellError != null)
hasCellValidationError = (bool) cellErrorInfo.GetValue(this, null);
if (rowError != null)
hasRowValidationError = (bool) rowErrorInfo.GetValue(this, null);
base.OnCanExecuteBeginEdit(e);
if ((!e.CanExecute && hasCellValidationError) || (!e.CanExecute && hasRowValidationError))
{
e.CanExecute = true;
e.Handled = true;
}
}