有没有办法有效地调试WPF数据绑定?

Sak*_*o73 9 wpf

我有一个数据绑定问题(一个单独的问题),通常当我编码时,我可以使用调试器逐步执行,并点击断点.可能一个简单的问题花了我一整天,没有解决方案(现在变得非常沮丧),因为我不知道如何在我的XAML数据绑定上"运行调试器".

如果有人能解释如何做到这一点,将不胜感激.

Rac*_*hel 9

我不知道VS是否提供了一种调试绑定的简单方法,但我通常使用Snoop来调试绑定

它是一个工具,将通过WPF应用程序,并为您提供应用程序的Visual Tree的TreeView.您可以选择一个元素来查看它的DataContext和其他属性.如果存在任何绑定错误,则通常会突出显示该属性,并说明错误是什么.如果绑定失败,因为该属性不存在,我通常可以跟踪DataContext并找出我在绑定中出错的地方.

  • Snoop 对我来说是天赐之物,它解决了 WPF 中数据绑定的所有细微差别。 (2认同)
  • 唉……几个月来一直在遭受这些无声的失败。终于找到了能让他们声音稍微大一点的东西。 (2认同)

pun*_*r76 6

添加一个虚拟转换器

<local:DebuggerConverter x:Key="DebuggerConverter" />

<TextBlock Text={Binding ToSomething, Converter={StaticResource DebuggerConverter}} />
Run Code Online (Sandbox Code Playgroud)

转换器

public class DebuggerConverter : IValueConverter
{
  #region IValueConverter Members

  public object Convert(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    // Set breakpoint here
    return value;
  }

  public object ConvertBack(object value, Type targetType, object parameter, System.Globalization.CultureInfo culture)
  {
    // Set breakpoint here
    return value;
  }

  #endregion
}
Run Code Online (Sandbox Code Playgroud)

或使用它并查看您的输出窗口

<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase">
  <TextBlock Text="{Binding ToSomething, diagnostics:PresentationTraceSources.TraceLevel=High}" />
</Window>
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助