2017-02-13 3 views
1

У меня есть код в моем WPF UserControl конструкторе, но он, похоже, не выполняется во время разработки.Почему мой код управления WPF не работает во время разработки?

Я знаю, что код позади должен выполняться во время разработки, и есть много примеров кода на StackOverflow, показывающих людей, использующих проверки времени разработки, которые поддерживают это.

Я даже попытался установить отладчик, и точки останова не пострадали.

+0

Без кода, о котором идет речь, сложно ответить. [Mcve]? Я могу сказать, что он должен запускаться (если он есть в конструкторе, Loaded, Initialised или подобный обработчик события. Click event скорее всего поймает дизайнер). ** Если вы хотите ударить по этой точке останова, вам нужно открыть другой экземпляр Visual Studio и прикрепить его к вашему экземпляру дизайна. ** Если это не работает - покажите свой код. –

+0

Этот код по существу является стандартным 'UserControl' по умолчанию с стандартным ctor, содержащим' InitializeComponent', а затем некоторый собственный код для установки текста TextBox. Независимо от того, что код не запускается. – Schneider

+0

Как вы можете сказать? Переписываете ли вы свойства, выполняете что-то вроде показа окна сообщения и т. Д.? –

ответ

1

Я думаю, что нашел ответ в very old 2007 article on the WPF Designer (известный в то время как «Сидр»). Вот важная бит:

Когда вы пишете код позади для конкретного элемента управления, что код за может или не может быть запущен во время разработки.

Если код находится в конструкторе элемента управления, размещенного родителем в дизайнере Сидра, он будет запущен, когда этот элемент управления будет загружен на поверхность дизайна. Например, если я создаю UserControl с именем MyUserControl и поместил его в окно, то конструктор для MyUserControl будет запущен при загрузке этого окна в Cider.

Однако, если я проектирования MyUserControl в сидр, потому что тип модифицируется и создан в то время, мы не экземпляр MyUserControl - что, в свою очередь, означает, что ни один из кода позади для MyUserControl будет запустить.

Для проверки этого я создал новый UserControl1.xaml и упал в экземпляр моего элемента управления с кодом, а код-код работал во время разработки, как и ожидалось.

Смежные вопросы