我想要完成一个非常简单的任务,但是到目前为止,SO或其他方面的解决方案都没有帮助我:
我有一个WPF DataGrid,它绑定到一个类型化的数据集.当我单击窗口中的"确定"按钮时,我想检测当前是否存在任何行验证错误.我想显示一个消息框并告诉用户解决这些错误.
我怎样才能做到这一点?
编辑
为了使我的问题更精确:
我要绑定的类型化数据集是一个包含表的简单数据集.这些表是通过调用WCF服务填充的,表中有5个文本列.其中一些列具有长度约束(例如,一列可能只有5个字符).
在ItemsSource我的GridView是在代码中设置如下:
dgvData.ItemsSource = m_dataModel.TableName;
Run Code Online (Sandbox Code Playgroud)
如果我在列中输入一些文本,一切都很好.在所述列中输入5个以上的字符,行旁边会显示红色行错误标记.我还没有进行任何自定义验证.
我可以看到红色感叹号,但是我无法在代码中确定它是否可见.我试过:
HasErrors属性(返回false)Validation.GetHasErrors(dgvData)也回来false了我在这里不知所措 - 必须有一个简单的方法吗?
好的,我已经解决了.以下是我想要的:
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;
}
Run Code Online (Sandbox Code Playgroud)
在我的"确定"按钮的代码中,我做:
for (int i = 0; i < dgvData.Items.Count; i++)
{
DataGridRow row = GetRow(dgvData, i);
if (row != null && Validation.GetHasError(row))
{
hasDataGridErrors = true;
break;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9287 次 |
| 最近记录: |