WPF UserControl
コンストラクタにコードがありますが、設計時に実行されていないようです。 デザイン時にWPFコントロールのコードビハインドが実行されないのはなぜですか?
私もデバッガを付けてみましたが、ブレークポイントはヒットしません。
WPF UserControl
コンストラクタにコードがありますが、設計時に実行されていないようです。 デザイン時にWPFコントロールのコードビハインドが実行されないのはなぜですか?
私もデバッガを付けてみましたが、ブレークポイントはヒットしません。
私は答えをvery old 2007 article on the WPF Designer(「サイダー」として知られています)で見つけたと思います。あなたが特定のコントロールのための背後にあるコードを書くとき
、 の背後にそのコードがまたは設計時に実行してもしなくてもよい。ここで重要なビットです。
コードビハインドが、Ciderデザイナーの親によって にホストされているコントロールのコンストラクターにある場合、コントロールが がデザインサーフェイスに読み込まれたときに実行されます。たとえば、MyUserControlという名前の UserControlを作成してそれをウィンドウに配置すると、MyUserControlの コンストラクタは、そのウィンドウがCiderの にロードされたときに実行されます。今度は MyUserControlのための背後にあるコードのいずれもならないことを意味します - そのタイプ は、その時点で変更して作成されているので、私は、サイダーにMyUserControlを設計しています場合
しかし、我々は MyUserControlのインスタンスを作成していません走る
これを確認するには、新しいUserControl1.xaml
を作成し、コードビハインド付きのコントロールのインスタンスにドロップし、コードビハインドを設計時に期待通りに実行しました。
問題のコードがなければ、答えるのは難しいです。 [mcve]?私はそれが実行する必要があることを伝えることができます(それがコンストラクタ、Loaded、Initializedまたは同様のイベントハンドラにある場合、クリックイベントはデザイナによって最もよく捕捉されます)。 **そのブレークポイントにヒットしたい場合は、Visual Studioの別のインスタンスを開き、デザインインスタンスにアタッチする必要があります。**それでも機能しない場合は、コードを表示してください。 –
問題のコードは基本的には 'InitializeComponent'を含む標準ctorとTextBoxテキストを設定するカスタムコードを持つデフォルトの' UserControl'です。コードが実行されていなくても。 – Schneider
どのように伝えることができますか?プロパティを上書きして、メッセージボックスの表示などを実行していますか? –