2011-11-10 98 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

希望這可以幫助你太... :)

相關問題