如何在设计模式下调试 WPF 用户控件?

Posted

技术标签:

【中文标题】如何在设计模式下调试 WPF 用户控件?【英文标题】:How do you debug a WPF user control in design mode? 【发布时间】:2015-02-13 00:42:48 【问题描述】:

我创建了一个包含标签的 wpf 用户控件。标签的前台设置会根据检查多个条件的某些代码而更改。我的控件中的标签在设计时显示错误的颜色,但我无法弄清楚如何在设计时调试我的用户控件,以便我可以让它捕获断点(从而找出我的逻辑有缺陷的地方)。控件上的颜色在运行时是正确的,只是在设计时显示不正确。

【问题讨论】:

【参考方案1】:

以下是在设计时调试控件的步骤:

启动第二个 Visual Studio 实例 从“调试”菜单附加到第一个实例 在第二种情况下,打开控件的源代码 在适当的位置设置断点 在第一个 VS 实例中,重新加载设计器

请注意,此技术不限于控件;您还可以使用它来调试 VS 扩展,或在 Visual Studio 中执行的任何内容。

【讨论】:

当我尝试这种方法时,我在第二个实例中设置的断点显示“当前不会命中断点。没有为此文档加载任何符号”并且它们永远不会被捕获。 @WiredWiz,这很奇怪......我多次使用这种技术(使用 WPF 标记扩展、值转换器等),它对我来说总是很好。 我确信 OP 早就发现了问题,但对于其他运行“断点当前不会被命中。没有为此文档加载任何符号”的其他人。确保启用项目代码按钮已切换。禁用该功能可能会导致该特定问题。记下这个类似问题的答案之一:***.com/questions/11738436/… 作为参考,这里是“在 Visual Studio 中设计时调试”的文档:docs.microsoft.com/en-us/visualstudio/debugger/… 它详细说明了如何附加到您的第一个 Visual Studio 实例。【参考方案2】:

为了调试 Controls 程序集,我使用以下解决方案。

    使用项目菜单打开项目的属性

    显示Debug(法语中的Déboguer)

    Start extern program 设置为devenv.exe(红色矩形)

    在我的电脑上

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

    填充命令行参数,使其等于解决方案的文件(蓝色矩形)

    指定工作目录。由于没有在参数中指定目录,因此工作目录等同于包含.sln 文件的目录。 (绿色矩形)

    在我的电脑上

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

现在,我第一次开始调试时,会启动一个新的 Visual Studio。这个阶段可能需要几分钟(在我的电脑上需要 5 分钟)。但这只是我第一次启动调试过程。

然后我可以在第二个 Visual Studio 应用程序上使用 Designer 中的控件,并查看在第一个窗口中定义的断点引发时会发生什么。

这与 WinForms 控件完美配合。

【讨论】:

以上是关于如何在设计模式下调试 WPF 用户控件?的主要内容,如果未能解决你的问题,请参考以下文章

在 wpf 应用程序中以调试模式检查当前用户凭据

如何从作为wpf mvvm模式中的窗口打开的视图模型中关闭用户控件?

wpf 下拉多选控件!

使用 MVVM 和视图模型通信的 WPF 窗口模式对话框

wpf控件设计时支持

只写模式下的 WPF 数据绑定控件