C# · 12月 27, 2021

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

我经常发现我在应用程序中意外破坏了数据绑定.无论是通过重命名一个属性,而不是在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上有一些有用的信息.