我经常发现我不小心破坏了应用程序中的数据绑定(bind)。通过重命名属性而不是在 XAML 中重命名,或者通过属性因某种原因引发异常。
默认情况下,数据绑定(bind)错误会记录到调试输出中,抛出的异常会被捕获和抑制。
是否有一种简单的方法可以在记录调试输出后抛出异常?
我想尽快知道数据绑定(bind)是否被破坏(最好是在自动化测试中发现它),而不是冒着它可能在人工测试之前被忽视的风险。
最佳答案
经过一些拖延,我终于着手编写解决方案来解决我原来的问题。
我的解决方案使用自定义 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;
PresentationTraceSources
也在 System.Diagnostics
中定义。
有关跟踪源的更多信息,请参阅 Mike Hillberg 的 blog .
Bea Stollnitz 有一些关于她的有用信息 blog .
关于c# - 如何传播 WPF 数据绑定(bind)期间发生的错误和异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/776193/