wpf - 如何将绑定(bind)错误转换为运行时异常?

标签 wpf debugging exception data-binding

正如我们的项目中设置了“将警告视为错误”以尽早发现可能出现的问题,我希望有一个运行时异常以尽早发现它们。

我最近被这个问题困扰,我很高兴有这个。

可以做到吗?如果是,如何?

最佳答案

您可以连接到 PresentationTraceSources 与您自己的听众一起收集:

public class BindingErrorListener : TraceListener
{
    private Action<string> logAction;
    public static void Listen(Action<string> logAction)
    {
        PresentationTraceSources.DataBindingSource.Listeners
            .Add(new BindingErrorListener() { logAction = logAction });
    }
    public override void Write(string message) { }
    public override void WriteLine(string message)
    {
        logAction(message);
    }
}

然后将其连接到代码隐藏中
public partial class MainWindow : Window
{
    public MainWindow()
    {
        BindingErrorListener.Listen(m => MessageBox.Show(m));
        InitializeComponent();
        DataContext = new string[] { "hello" };
    }
}

这是带有绑定(bind)错误的 XAML
    <Grid>
    <TextBlock Text="{Binding BadBinding}" />
</Grid>

关于wpf - 如何将绑定(bind)错误转换为运行时异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4225867/

相关文章:

c# - 从 UI 制作 GeometryDrawing 交互式 map ? (在 WPF 中与 SVG 图像交互)

c# - WPF DataGrid 上的双重绑定(bind)?

wpf - 如何强制WPF组合框显示其项目列表?

c# - 我可以配置 NUnit 以便 Debug.Fail 在我运行测试时不显示消息框吗?

java - Java 有类似 ELMAH 的东西吗?

c# - 我不能包含 RelayCommands

java - Eclipse调试HashMap : Logical Structure using Key and Value's toString() method

javascript - "create-react-app"调试在 WebStorm 中不起作用

c# - 如何让程序在捕获到异常后重复自身?

java - 要求 JUnit 在其调用的方法中抛出异常