c# - 如何传播 WPF 数据绑定(bind)期间发生的错误和异常?

标签 c# wpf data-binding xaml

我经常发现我不小心破坏了应用程序中的数据绑定(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/

相关文章:

c# - 如何正确绑定(bind) WPF TreeView 控件并有效地显示数据的层次结构?

java - 常见嵌套类型的 JAXB 绑定(bind)

java - 数据绑定(bind);查看标签不正确,Android

c# - 如何在 C# 中从 TKey 获取字典 TValue?

c# - Entity Framework - SQL Azure 重试策略

wpf - MVVM IValueConverter Convert 方法在期望 float 时获取空字符串参数

c# - 使用参数从 Winform 应用程序调用 WPF 应用程序

c# - LinQ 获取具有平均数字误差的不同字段

c# - 在 PowerShell cmdlet 参数中声明获取访问器

c# - wpf如何从嵌套 View 切换父选项卡