How to find the stack trace for data binding?
This is a rather special request, I’ll admit. For reasons of my own, I need to find the method(s) called to actually performed data binding in WPF & WinForms.
I have an elegant solution, which is too large to include in this blog post, but I’ll say that it doesn’t involves reflector at all.
Can you figure it out?
Comments
Throwing an exception and looking at its stack trace?
Dynamics?
Use StackTrace class?
Maybe, using some AOP you can log those methods for further use.
I have discovered a truly marvelous method to find the methods used in databinding, in WPF or Winforms. This margin is too narrow to contain it.
This sounds like "Fermat's Last Theorem" :). Sure hope the outcome will be different.
Use a "debug" converter, which does nothing but return the value passed in, and set a breakpoint in the "Convert" method?
Put breakpoints in the get and set methods of properties that are databound, then look at the stack trace in Visual Studio.
For bonus points, enable .Net Framework source stepping and you can step through the databinding engine.
@Samuel Jack Yep. That's how I do it too.
Dynamic Proxy Interceptor with a Breakpoint in it? ;)
greetings Daniel
Converter.
Trace points and printing of $CALLSTACK?
Subclass Binding?
Two of my three approaches were already mentioned above:
1) Breakpoint in the property getter/setter;
2) Throw an exception in the property getter/setter;
Also, you could use the profiling API, but I don't think that counts as an "elegant solution."
For WinForms, you could probably also attach Format and/or Parse listeners to the Binding, and break/throw inside the appropriate methods. There's no guarantee that the call to Format/Parse is going to be made within the specific call stack that you're hoping to find, though.
Comment preview