Ash*_*vis 9 c# data-binding wpf xaml
我经常发现我在应用程序中意外破坏了数据绑定.通过重命名属性而不是在XAML中重命名属性,或者由于某种原因抛出异常的属性.
默认情况下,数据绑定错误会记录到调试输出中,并且会捕获并抑制抛出的异常.
是否有一种简单的方法可以在记录调试输出后抛出异常?
我想尽快知道数据绑定是否被破坏(理想情况下是在自动化测试中取出),并且不会冒险在人类测试之前可能会被忽视的可能性.
Ash*_*vis 11
经过一些拖延后,我终于着手为我原来的问题编写解决方案.
我的解决方案使用自定义TraceListener(最初由John建议)记录到输出窗口.发生错误时,输出窗口会自动显示并购买到前台.
这是我的TraceListener:
public class ErrorLogTraceListener : TraceListener
{
public override void Write(string message)
{
...
}
public override void WriteLine(string message)
{
...
}
}
Run Code Online (Sandbox Code Playgroud)
TraceListener 在System.Diagnostics中定义.
TraceListener必须将自定义连接到要使用的系统中.这样做的官方方法是在注册表中设置一些内容然后使用该App.config文件来配置TraceListener.
但是我发现有一种更简单的方法可以以编程方式执行此操作:
ErrorLogTraceListener listener = new ErrorLogTraceListener();
PresentationTraceSources.Refresh();
PresentationTraceSources.DataBindingSource.Listeners.Add(listener);
PresentationTraceSources.DataBindingSource.Switch.Level = SourceLevels.Error;
Run Code Online (Sandbox Code Playgroud)
PresentationTraceSources也定义于System.Diagnostics.
有关跟踪源的更多信息,请参阅Mike Hillberg的博客.
Bea Stollnitz在她的博客上有一些有用的信息.