加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 如何传播在WPF数据绑定期间发生的错误和异常?

发布时间:2020-12-15 03:51:49 所属栏目:百科 来源:网络整理
导读:我经常发现我在应用程序中意外破坏了数据绑定.无论是通过重命名一个属性,而不是在XAML中重命名它,或者由于某种原因抛出异常的属性. 默认情况下,记录数据绑定错误以调试输出,抛出的异常被捕获和抑制. 在调试输出记录后,是否有一个简单的方法来抛出异常? 我想
我经常发现我在应用程序中意外破坏了数据绑定.无论是通过重命名一个属性,而不是在XAML中重命名它,或者由于某种原因抛出异常的属性.

默认情况下,记录数据绑定错误以调试输出,抛出的异常被捕获和抑制.

在调试输出记录后,是否有一个简单的方法来抛出异常?

我想尽快知道数据绑定是否被破坏(理想情况下,在自动化测试中进行),并且不会冒险在人类进行测试之前不会被忽视的机会.

解决方法

经过一些拖延,我终于设定了解决我原来问题的解决方案.

我的解决方案使用自定义TraceListener(最初由John建议)记录到输出窗口.当出现错误时,输出窗口会自动显示并发送到前台.

这是我的TraceListener:

public class ErrorLogTraceListener : TraceListener
{
    public override void Write(string message)
    {
        ...
    }

    public override void WriteLine(string message)
    {
        ...
    }
}

TraceListener在System.Diagnostics中定义.

必须将自定义的TraceListener挂接到要使用的系统中.正确的方法是在注册表中设置一些内容,然后使用App.config文件配置TraceListener.

然而,我发现有一个更容易的方法是以编程方式执行此操作:

ErrorLogTraceListener listener = new ErrorLogTraceListener();
PresentationTraceSources.Refresh();

PresentationTraceSources.DataBindingSource.Listeners.Add(listener);
PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Error;

PresentationTraceSource也在System.Diagnostics中定义.

有关追踪来源的更多信息,请参阅Mike Hillberg的blog.

Bea Stollnitz在她的blog上有一些有用的信息.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读