20

I am having a data binding problem (a separate question), and normally when I code, I can use the debugger to step through, and hit break points. What is probably a simple issue has taken me all day, with no resolution (getting very frustrated now), because I do not know how to "run the debugger" on my XAML data bindings.

If anyone could explain how to do this, it would be greatly appreciated.

1
  • 1
    Thanks for all of the great answers. Everybody +1. Commented Nov 11, 2011 at 18:24

4 Answers 4

18

I have no idea if VS provides an easy way to debug bindings, but I usually use Snoop for debugging bindings

It's a tool that will go through a WPF application and give you a TreeView of the application's Visual Tree. You can select an element to view its DataContext and other properties. If there are any binding errors, the property is usually highlighted and it will say what the error was. If the binding is failing because the property doesn't exist, I can usually trace the DataContext and figure out where I went wrong in my binding.

Sign up to request clarification or add additional context in comments.

2 Comments

Snoop has been a godsend for me with all the little nuances of databinding in WPF.
Sigh... been suffering these silent failures for months. Finally found something that makes them slightly louder.
13

add a dummy converter

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

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

the converter

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
}

or use this and look at your output window

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

hope this helps

1 Comment

PresentationTraceSources is key here.
2

You can get some basic information about binding errors in the Output Window in Visual Studio. It will show the binding expression path error and the line on which the error occured.

Comments

1

Add a dummy value converter to your binding. Put a breakpoint inside the value converter. Also check debug output window in Visual Studio for any binding errors.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.