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

时间:2011-11-10 20:55:26

标签: wpf

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

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

5 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分:3)

添加虚拟转换器

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

<TextBlock Text={Binding ToSomething, Converter={StaticResource DebuggerConverter}} />

转换器

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
}

或使用它并查看输出窗口

<Window xmlns:diagnostics="clr-namespace:System.Diagnostics;assembly=WindowsBase">
  <TextBlock Text={Binding ToSomething, diagnostics:PresentationTraceSources.TraceLevel=High" />
</Window>

希望这会有所帮助

答案 2 :(得分:1)

为绑定添加虚拟值转换器。在值转换器中放置一个断点。还要检查Visual Studio中的调试输出窗口是否存在任何绑定错误。

答案 3 :(得分:1)

您可以在Visual Studio的“输出”窗口中获取有关绑定错误的一些基本信息。它将显示绑定表达式路径错误和发生错误的行。

答案 4 :(得分:1)

当我开始使用WPF时,这是我调试绑定时面临的主要问题。每次查看“输出”窗口并搜索绑定对于非常大的应用程序来说都很麻烦。然后我偶然发现了这篇优秀的文章,详细了解了Bindings - http://bea.stollnitz.com/blog/index.php?s=presentationtrace

希望这也可以帮助你......:)