2011-12-08 19 views
1

在C#中编写WPF应用程序时发生了一个非常神秘的错误。为什么我的C#事件在不运行应用程序的情况下在XAML(WPF)上触发?

我在自定义用户控件中有一个事件,每次按钮上的文本发生变化时都会显示一个消息框。当我编辑XAML中的按钮上的文本时,事件触发 - 即使没有我的应用程序实际运行。

当我试图在事件中打开一个新的WPF窗口时,该应用程序崩溃与“Stackoverflow” - 之后,VS(C#Express)也崩溃了,我无法打开我的项目,直到我改变了事件并删除我的调试和发布文件夹中的所有内容。

为什么会触发此事件?

+0

即使没有窗口可见,您的应用程序也必须一直运行,因为过程处于活动状态。我怀疑调试器仍然连接并且进程正在运行。 –

+0

我也这么认为,但它并不需要启动应用程序。重新启动后,事件仍然会触发。我打开VS,没有编译它 - 而是我改变了按钮上的文本和messagebox appeard。 – Jazzschmidt

+0

根据下面的答案,我显然是错的,你每天都会学到新的东西。 –

回答

4

usercontrol在Visual Studio中运行。

基本上Visual Studio会加载包含该控件的程序集并执行该控件。

这意味着如果您的控件显示某个在设计时执行的事件的消息框,那么该消息框也将显示在Visual Studio中。

要解决此问题,请确保您的控件在Visual Studio中托管时不会执行有害或类似的代码。

+0

我想这将是原因,但实际上是这样吗?那么什么时候触发?你添加/删除的每个字母?每一次保存?在“完成”编辑字段之后? –

+1

如果您无法更改代码,您还可以检查您的控件是否以设计模式(即VisualStudio)运行,并防止代码被执行。请参阅http://stackoverflow.com/questions/834283/is-there-a-way-to-check-if-wpf-is-currently-executing-in-design-mode-or-not – SvenG

+0

不知道那里有代码在设计模式下执行。谢谢你的帮助! – Jazzschmidt

0

某些代码仍然可以运行InDesignMode是否将您的xaml绑定到DataProvider?

相关问题