2011-11-10 68 views
5

我有一个数据绑定问题(一个单独的问题),通常当我编码时,我可以使用调试器来逐步通过,并达到中断点。什么可能是一个简单的问题,我一整天都没有解决(现在非常沮丧),因为我不知道如何在我的XAML数据绑定中“运行调试器”。有没有什么办法可以有效地调试WPF数据绑定?

如果有人可以解释如何做到这一点,将不胜感激。

+0

感谢所有伟大的答案的。大家+1。 – Sako73

回答

8

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

这是一个工具,它会经过一个WPF应用程序,给你的应用程序的可视化树的树视图。您可以选择一个元素来查看它的DataContext和其他属性。如果有任何绑定错误,该属性通常会突出显示,并会显示错误是什么。如果由于该属性不存在而导致绑定失败,我通常可以跟踪DataContext并找出绑定中出错的位置。

+0

Snoop对于我来说是一个天赐之物,它带有WPF数据绑定的所有细微差别。 – Tim

+0

叹息......几个月来一直在忍受着这些沉默的失败。最后找到了让他们稍微响亮一些的东西。 –

1

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

1

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

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> 

希望这有助于

1

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

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

相关问题