2017-02-13 6 views
1

WPF UserControlコンストラクタにコードがありますが、設計時に実行されていないようです。 デザイン時にWPFコントロールのコードビハインドが実行されないのはなぜですか?

は私が 必ずの背後にある設計時に実行するようになっているそのコードをよ、これはケースをサポートしているデザイン時のチェックを使用してのStackOverflow示す人々にサンプルコードがたくさんあります。

私もデバッガを付けてみましたが、ブレークポイントはヒットしません。

+0

問題のコードがなければ、答えるのは難しいです。 [mcve]?私はそれが実行する必要があることを伝えることができます(それがコンストラクタ、Loaded、Initializedまたは同様のイベントハンドラにある場合、クリックイベントはデザイナによって最もよく捕捉されます)。 **そのブレークポイントにヒットしたい場合は、Visual Studioの別のインスタンスを開き、デザインインスタンスにアタッチする必要があります。**それでも機能しない場合は、コードを表示してください。 –

+0

問題のコードは基本的には 'InitializeComponent'を含む標準ctorとTextBoxテキストを設定するカスタムコードを持つデフォルトの' UserControl'です。コードが実行されていなくても。 – Schneider

+0

どのように伝えることができますか?プロパティを上書きして、メッセージボックスの表示などを実行していますか? –

答えて

1

私は答えをvery old 2007 article on the WPF Designer(「サイダー」として知られています)で見つけたと思います。あなたが特定のコントロールのための背後にあるコードを書くとき

の背後にそのコードがまたは設計時に実行してもしなくてもよい。ここで重要なビットです。

コードビハインドが、Ciderデザイナーの親によって にホストされているコントロールのコンストラクターにある場合、コントロールが がデザインサーフェイスに読み込まれたときに実行されます。たとえば、MyUserControlという名前の UserControlを作成してそれをウィンドウに配置すると、MyUserControlの コンストラクタは、そのウィンドウがCiderの にロードされたときに実行されます。今度は MyUserControlのための背後にあるコードのいずれもならないことを意味します - そのタイプ は、その時点で変更して作成されているので、私は、サイダーにMyUserControlを設計しています場合

しかし、我々は MyUserControlのインスタンスを作成していません走る

これを確認するには、新しいUserControl1.xamlを作成し、コードビハインド付きのコントロールのインスタンスにドロップし、コードビハインドを設計時に期待通りに実行しました。

関連する問題