DataGrid 验证。未调用错误

发布于 2024-12-11 12:51:50 字数 729 浏览 0 评论 0原文

当 SelectedItem.DT 抛出错误时 Validation_Error 未被调用? DT 是来自 SQL 查询的数据表,我想在 TSQL 失败时显示 SQL 错误。我想我可以构建一个数据表并将 ex.msg 放入表中。但我宁愿调用 Validation_Error。

    <DataGrid Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True"  
              ItemsSource="{Binding ElementName=cbReports, Path=SelectedItem.DT, ValidatesOnExceptions=True, NotifyOnValidationError=True, NotifyOnSourceUpdated=True}"
              Validation.Error="Validataion_Error" />

当集合中抛出错误时,此文本框(在另一页上)确实会调用 Validation_Error 。

    <TextBox Text="{Binding Path=DF.FieldValue, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"
             Validation.Error="Validataion_Error"/>

When SelectedItem.DT throws an error Validation_Error is not called? DT is a DataTable from a SQL query and I want to display the SQL error if the TSQL fails. I guess I could build a DataTable and put the ex.msg in the table. But I would rather call Validation_Error.

    <DataGrid Grid.Row="1" Grid.Column="0" AutoGenerateColumns="True"  
              ItemsSource="{Binding ElementName=cbReports, Path=SelectedItem.DT, ValidatesOnExceptions=True, NotifyOnValidationError=True, NotifyOnSourceUpdated=True}"
              Validation.Error="Validataion_Error" />

This TextBox (on another page) does call Validation_Error when an error is thrown in set.

    <TextBox Text="{Binding Path=DF.FieldValue, Mode=TwoWay, ValidatesOnExceptions=True, NotifyOnValidationError=True}"
             Validation.Error="Validataion_Error"/>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

回眸一遍 2024-12-18 12:51:50

DataTable 未实现 IDataErrorInfo 那么它不会自动为您执行任何验证错误。我总是将 DataTable 转换为实现 IDataErrorInfo 的类的 ObservableCollection

public class MyClass : IDataErrorInfo
{
    //..
}

// Use ObservableCollection instead of DataTable
ObservableCollection<MyClass> MyDataGridItemsSource { get; set; }

我猜你的文本框绑定起作用的原因是 DF.FieldValue 中的 DF 实现了 IDataErrorInfo

DataTable is not implement IDataErrorInfo then it isn't do any validation error automatically for you. I always transform DataTable to ObservableCollection of my class that implement IDataErrorInfo.

public class MyClass : IDataErrorInfo
{
    //..
}

// Use ObservableCollection instead of DataTable
ObservableCollection<MyClass> MyDataGridItemsSource { get; set; }

I guess that the reason your textbox binding works is DF in your DF.FieldValue is implement IDataErrorInfo.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文