gpt4 book ai didi

c# - WPF:检测 C# 代码中的行验证错误

转载 作者:行者123 更新时间:2023-11-30 13:50:13 26 4
gpt4 key购买 nike

我想完成一个非常简单的任务,但到目前为止,这里没有任何解决方案或其他解决方案对我有帮助:

我有一个 WPF DataGrid,它绑定(bind)到一个类型化数据集。当我单击窗口中的“确定”按钮时,我想检测当前是否存在任何行验证错误。我想显示一个消息框并告诉用户解决这些错误。

我怎样才能做到这一点?

编辑
为了让我的问题更准确一点:

我要绑定(bind)的类型化数据集是一个包含表格的简单数据集。这些表是通过调用 WCF 服务填充的,表中有 5 个文本列。其中一些列有长度限制(例如,一列可能只需要 5 个字符)。

我的GridViewItemsSource在代码中设置如下:

dgvData.ItemsSource = m_dataModel.TableName;

如果我在列中输入一些文本,一切都很好。在所述列中输入超过 5 个字符,红色行错误标记显示在该行旁边。我还没有进行任何自定义验证。

我可以看到红色感叹号,但我无法在代码中确定它是否可见。我尝试过:

  • 使用数据集的HasErrors属性(返回false)
  • Validation.GetHasErrors(dgvData) 也返回 false
  • H.B. 在他的评论中提到的解决方案,但没有奏效

我在这里不知所措 - 一定有一种简单的方法可以做到这一点?

最佳答案

好的,我已经解决了。以下是我想要的:

public static DataGridRow GetRow(DataGrid grid, int index)
{
DataGridRow row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(index);
if (row == null)
{
// May be virtualized, bring into view and try again.
grid.UpdateLayout();
grid.ScrollIntoView(grid.Items[index]);
row = (DataGridRow)grid.ItemContainerGenerator.ContainerFromIndex(index);
}
return row;
}

在“确定”按钮的代码中,我这样做了:

for (int i = 0; i < dgvData.Items.Count; i++)
{
DataGridRow row = GetRow(dgvData, i);
if (row != null && Validation.GetHasError(row))
{
hasDataGridErrors = true;
break;
}
}

关于c# - WPF:检测 C# 代码中的行验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121892/

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