gpt4 book ai didi

wpf - 在任何一个单元格中出现一些验证错误后如何编辑数据网格中的行

转载 作者:行者123 更新时间:2023-12-02 21:23:45 25 4
gpt4 key购买 nike

我正在使用 DataGrid 来显示/编辑数据。我想允许用户编辑多行,尽管其中一些可能存在验证错误。现在,如果某些行存在验证错误,我无法编辑其他行。我看到了一个解决方案,我需要使用反射来获取 DataGrid 的一些属性。有没有更好、更干净的方法来做到这一点?

最佳答案

您可以自定义datagrid并覆盖其OnCanExecuteBeginEdit事件,如下所示:

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

它检查datagrid是否有验证错误,然后设置其e.CanExecute = true,以便您可以在另一个单元格中键入。

关于wpf - 在任何一个单元格中出现一些验证错误后如何编辑数据网格中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26057518/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com