How do you debug a WPF user control in design mode?
Asked Answered
M

2

10

I have a wpf user control I created that contains a label. The label's foreground setting changes based on some code that checks a number of conditions. The label in my control is displaying the wrong color at design time but I cannot figure out how to debug my user control at design time so that I can have it catch breakpoints (and thus figure out where my logic is flawed). The color on the control is correct at run-time, it is only at design time that it is displayed incorrectly.

Millsap answered 14/12, 2014 at 23:15 Comment(0)
D
8

Here are the steps to debug a control at design time:

  • Start a second instance of Visual Studio
  • Attach to the first instance from the Debug menu (or in VS2022, attach to the WPFSurface)
  • In the second instance, open the source code of your control
  • Set breakpoints at appropriate locations
  • In the first VS instance, reload the designer

Note that this technique isn't limited to controls; you can also use it to debug VS extensions, or anything that executes within Visual Studio.

Dutiable answered 15/12, 2014 at 0:1 Comment(4)
When I try this approach the breakpoints I set in the second instance say "The breakpoint will currently not be hit. No symbols have been loaded for this document" and they never get caught.Millsap
@WiredWiz, that's weird... I used this technique many times (with WPF markup extension, value converters, etc.), and it always worked fine for me.Dutiable
I'm sure the OP long since figured out the problem, but for anyone else running across "The breakpoint will currently not be hit. No symbols have been loaded for this document." Make sure the Enable Project Code button is toggled. Having that disabled can cause that particular issue. Credit one of the answers on this similar question: #11738936Floury
For reference, here is the documentation "Debug at design time in Visual Studio": learn.microsoft.com/en-us/visualstudio/debugger/… It details how to attach to your first instance of Visual Studio.Buxom
D
0

To debug Controls assembly, I use following solution.

  1. open project's properties using Project menu

  2. display Debug (Déboguer in french)

  3. Set Start extern program to devenv.exe (red rectangle)

    On my PC it is

    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\Common7\IDE\devenv.exe

  4. Fill arguments of command's line so that is is equal to solution's file (blue rectangle)

  5. Specify working directory. Since directory is not speficied in arguments, working directoring is equivalent to directory that contains .sln file. (green rectangle)

    On my PC it is

    D:\@Projets\VisualBasic.Net\Tramex.Controls.Net\Test

enter image description here

Now, the first time I start debugging, a new Visual Studio is started. This phase can leave some minutes (on my PC 5 minutes). But this is only for the first time I start the debug process.

I can then works with controls in Designer on second Visual Studio application and see what happens when a breakpoint define in first windows is raised.

This works perfectly well with WinForms controls.

Discriminatory answered 3/4, 2021 at 19:20 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.