2011-12-08 3 views
1

C#でWPFアプリケーションをコーディングするときに非常に不思議なエラーが発生しました。アプリケーションを実行せずにC#イベントがXAML(WPF)で発生するのはなぜですか?

カスタムUser-Controlでイベントが発生しました。これは、ボタン上のテキストが変更されるたびにメッセージボックスを表示します。 XAMLのボタンのテキストを編集すると、アプリケーションが実際に実行されていなくてもイベントが発生します。

イベントで新しいWPFウィンドウを開こうとしたとき、アプリケーションが "Stackoverflow"でクラッシュしました。その後、VS(C#Express)もクラッシュし、変更するまでプロジェクトを開くことができませんでした。デバッグとリリースのフォルダ内のすべてのコンテンツを削除しました。

このイベントはなぜトリガーされますか?

+0

ウィンドウが表示されていなくても、プロセスがアクティブであったため、アプリが実行されている必要があります。デバッガがまだ接続されていて、プロセスが実行されていると思われます。 –

+0

私もそう思っていましたが、アプリを起動する必要はありません。再起動後、イベントはまだ発生します。私はVSを開いた、それをコンパイルしなかった - 代わりに、私はボタンとメッセージボックスappeardのテキストを変更しました。 – Jazzschmidt

+0

以下の答えにはっきりと間違っています。あなたは毎日何か新しいことを学びます。 –

答えて

4

ユーザーコントロールは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にバインドされていますか?

関連する問題