2011-12-08 15 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?

相關問題