【问题标题】:How do I handle this exception?我该如何处理这个异常?
【发布时间】:2011-09-21 07:02:14
【问题描述】:

我有一个 WPF 工具包 DataGrid,其 ItemsSource 属性绑定到 DataTable。 DataTable 对其中一列具有唯一约束。如果我尝试在列中输入非唯一数据,则会从我无法访问的代码区域引发异常(这很好),然后应用程序崩溃(这很糟糕)。

如何捕获或以其他方式处理此异常以使应用程序不会崩溃?

【问题讨论】:

  • 你能显示一些代码吗?你也捕捉到异常了吗,你在catch语句中做了什么
  • @Hasanain,你想看什么代码?不,我没有捕捉到异常,但我想 - 因此问题。
  • 我假设您有一个库/dll,但您没有源代码,异常会出现在您的代码中...那么您能否显示代码,关于您在哪里/如何使用数据表...
  • 绑定是在 XAML 中声明的,所以我无法访问任何代码来包装在 try catch 中。我假设有另一种方法来处理这种绑定异常。
  • 您是否尝试在您的ViewModel 中实现IDataErrorInfo 并检查输入的数据?如果数据不是唯一的,请定义一个错误,Exception 不会被抛出,您的 TextBox 只会显示为红色,显示发生了错误(更多信息:codeproject.com/KB/WPF/wpfvalidation.aspx

标签: c# wpf datagrid binding wpftoolkit


【解决方案1】:

我通过在DataGrid 上的CellEditEnding 事件中添加一种验证来解决此问题。如果验证失败,我将e.Cancel 设置为true

这可能不是解决此问题的正确方法,但它具有预期的最终结果。

【讨论】:

  • 这是一个可行的解决方法。如果您曾经离开 DataTable 并进入对象数据,您可以设置您的数据类以实现 IDataErrorInfo 并使用它来执行验证。 WPF 很好地使用了这一点,如果出现错误,您可以显示一个 ValidationErrorTemplate 项,该项修改控件以向用户提供有关如何正确编辑字段/属性的信息。退房
猜你喜欢
  • 1970-01-01
  • 2020-09-01
  • 2021-04-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多