And*_*nea 29 data-binding debugging wpf exception
就像在我们的项目中设置"将警告视为错误"以捕捉早期可能存在的问题一样,我希望有一个运行时异常来及早发现它们.
我最近有点担心这个问题,我很高兴能有这个问题.
可以吗?如果是,怎么样?
Dea*_*alk 42
您可以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);
}
}
Run Code Online (Sandbox Code Playgroud)
然后将其挂钩在代码隐藏中
public partial class MainWindow : Window
{
public MainWindow()
{
BindingErrorListener.Listen(m => MessageBox.Show(m));
InitializeComponent();
DataContext = new string[] { "hello" };
}
}
Run Code Online (Sandbox Code Playgroud)
这是带有绑定错误的XAML
<Grid>
<TextBlock Text="{Binding BadBinding}" />
</Grid>
Run Code Online (Sandbox Code Playgroud)