【问题标题】:Debug a WPF window or Windows Form without running your application?在不运行应用程序的情况下调试 WPF 窗口或 Windows 窗体?
【发布时间】:2013-09-15 14:00:08
【问题描述】:

我是 WPF 新手,有一个与文章完全相同的问题:“演练:在不运行应用程序的情况下调试 WPF 窗口或 Windows 窗体”。

链接:http://blogs.msdn.com/b/habibh/archive/2009/07/17/walkthrough-debug-a-wpf-window-or-windows-form-without-running-your-application-video.aspx

我以图片为例: http://blogs.msdn.com/blogfiles/habibh/WindowsLiveWriter/DebugaWPFwindoworWindowsFormwithoutrunni_FD38/image_3.png

从图片上看,该项目有4个WPF窗口如:

  1. App.xaml
  2. 创建...等等.xaml
  3. MainWindows.xaml
  4. ViewChart...等等.xaml

每次在 VS 2010 中,我点击开始调试 (F5) 或不调试就开始 (Ctrl + F5) 将始终运行 MainWindows.xaml。这是什么原因?这是因为在我们声明 StartupUri="MainWindow.xaml" 的 App.xaml 中。

我可以运行特定的 WPF 窗口,例如 4.ViewChart... so on.xaml 而不是整个应用程序(*如 MainWindows.xaml)?

【问题讨论】:

  • 确实,StartupUri="MainWindow.xaml" 决定了首先显示的主应用程序框架窗口。使用 WPF,您可以尝试使用 Blend 来查看其他窗口,但调试功能非常有限。您可以提供用于绑定的示例数据,这样您就可以调试一些东西。
  • Tony,如果我只想运行特定的 WPF 窗口而不是 MainWindows.xaml,我该怎么办。我知道更改 StartupUri="MainWindow.xaml" 将完成工作。但是假设将来我有许多 WPF 窗口,并且每次需要运行特定的窗口都需要更改启动文件名将是一项乏味的工作@.@ 有什么解决方案吗?谢谢你回复我~~
  • Tony,您的意思是创建允许我们在运行时转到特定 WPF 窗口的导航功能?
  • 您可以尝试这样做。我只能分享我的经验。过去,当我必须对复杂的对话框进行单元测试时,我会创建单独的应用程序。这涉及在共享代码时要格外小心,这样您就不需要不断更新自己的测试用例。我使用 Blend 进行数据绑定调试整个应用程序。
  • 托尼,感谢您与我分享您的经验。那我试试看~~

标签: c# wpf visual-studio-2010


【解决方案1】:

您链接的文章已过时,演示他的解决方案的视频不再托管。但是,视频中概述的基本步骤仍然可行,尽管此过程可能比其价值更麻烦。

流程如下:

  1. 打开即时调试器窗口(调试 -> 窗口 -> 即时窗口)
  2. 在即时模式下,创建您要测试的窗口实例。
  3. 在您的即时实例上调用ShowDialog() 方法。

这种调试方法的主要问题是,如果您的窗口有一个复杂的构造函数或依赖于外部对象,那么您最终可能会花费更多的时间来设置依赖关系,而不仅仅是导航到页面所花费的时间。

【讨论】:

  • 酷,你怎么不看视频就知道是什么方法(或者你只是记忆力很好):P...
  • 它在一些不起眼的地方被引用,更不用说看着同事把这个想法搞砸了(不同程度的成功)
  • 感谢您的回复,我试过了,但我有这个错误:“'((System.Windows.Window)($w))' is null”...请问这是什么这是什么意思?除此之外,我创建实例的方法是否正确? ?视窗 w = 新视窗(); ? w.ShowDialog();如果我错了,你能纠正我吗:)欢迎任何评论。
  • 在即时窗口中创建特定 xaml 窗口实例的方法与在您的代码中相同...您的按钮单击处理程序中是否有代码生成其他窗口或你用其他方法吗?喜欢var viewChart = new ViewChart(); viewChart.ShowDialog()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-21
  • 1970-01-01
  • 2012-05-31
  • 1970-01-01
  • 1970-01-01
  • 2010-10-18
  • 1970-01-01
相关资源
最近更新 更多