2011-11-10 13 views
5

私はデータバインドの問題(別の質問)があります。通常、コードするときに、デバッガを使用してステップを実行し、ブレークポイントをヒットさせることができます。 XAMLのデータバインディングで「デバッガを実行する」方法がわからないため、おそらく簡単な問題は解決されずに終日苦しんでいます(今は非常に不満です)。WPFデータバインディングを効果的にデバッグする方法はありますか?

誰でもこれを行う方法を説明できれば、非常に感謝しています。

+0

おかげであなたを助けるかもしれない - それから私は、バインディングの詳細を理解して、この素晴らしい記事に出くわしました。みんな+1。 – Sako73

答えて

8

は、私は考えているが、私は通常、デバッグバインディング

ためSnoopを使用することは、WPFアプリケーションを介して行って、あなたのアプリケーションのビジュアルツリーのツリービューを与えるツールです。要素を選択すると、DataContextやその他のプロパティを表示できます。バインディング・エラーがある場合、通常はそのプロパティーが強調表示され、エラーの内容が示されます。プロパティが存在しないためにバインディングが失敗した場合は、通常、DataContextをトレースして、バインディングでどこが間違っているかを調べることができます。

+0

スヌープはWPFでのデータバインディングの微妙なニュアンスを持って私のために神になってくれました。 – Tim

+0

一言...これらの静かな失敗に数ヶ月苦しんでいます。最後に少し大きめのものを見つけました。 –

1

バインディングにダミー値コンバータを追加します。値コンバータの中にブレークポイントを置く。また、Visual Studioのデバッグ出力ウィンドウでバインドエラーがないかチェックしてください。 VSはデバッグバインディングへの簡単な方法を提供する場合

1

Visual Studioの出力ウィンドウで、バインディングエラーに関する基本的な情報を得ることができます。バインディング式パスのエラーとエラーが発生した行が表示されます。

3

私が始めたとき

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

が、これは

1

を役に立てば幸い

<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 
} 

またはこれを使用するダミーコンバータを追加し、出力ウィンドウを見てWPFを使用して、これを私のバインディングのデバッグに直面した主な問題です。出力ウィンドウを見るたびにバインドを検索することは、非常に大きなアプリケーションでは面倒です。 http://bea.stollnitz.com/blog/index.php?s=presentationtrace

うまくいけば、これは偉大な答えのすべてのために...あまりにも:)

関連する問題