Задать вопрос
gorbulevsv
@gorbulevsv
Самоучка

При добавлении самодельного элемента управления в WebForms на форму программно, теряется та часть, которая написана в XAML разметке, как быть?

Подскажите, пожалуйста, если можете.

Для Web Forms делаю пользовательские элементы управления, разметку делаю в XAML файле, код в C#.
Потом кидаю этот элемент на форму - все поля, которые были заданы при оформлении пользовательского элемента управления в XAMLе - все появляются на моей форме, короче, всё работает.

Если я пытаюсь добавить этот элемент управления через код (C#), типа
{ ... форма.Controls.Add(new мойЭлементУправления()); ...}
то эти все поля пропадают (они становятся не инициализированными).

Может кто подскажет, что нужно добавить?
  • Вопрос задан
  • 240 просмотров
Подписаться 1 Оценить 2 комментария
Пригласить эксперта
Ответы на вопрос 2
@dmitryKovalskiy
программист средней руки
1)Это не XAML, а ASPX - иначе вы разрабатываете для WPF и вопрос задали не по тем тегам.
2)WebForms - отмирающая хрень, и если вы планируете зарабатывать на жизнь веб-разработкой под ASP.NET - изучайте MVC.
3)Ваш код в описанном виде вполне нормален, но у WebForms есть фича, с которой сейчас мало кто связываться хочет, а именно - жизненный цикл страницы. Внимание загадка - на каком этапе жизненного цикла вы вкрячили этот контрол? Есть вероятность что вы его вкрячили на этапе, когда страница считает что все Контролы уже полностью инициализированы и их осталось только отрисовать.
4) Ну и без кода вашего контрола что-либо судить тоже трудно.
Ответ написан
gorbulevsv
@gorbulevsv Автор вопроса
Самоучка
Ура, нашёлся ответ:

в коде вместо
WebUserControl myControl = new WebUserControl();
       form1.Controls.Add(myControl);


пишем
WebUserControl myControl = (WebUserControl)LoadControl("~/WebUserControl.ascx");
        form1.Controls.Add(myControl);


тока в Page нужно зарегистрировать WebUserControl:
<%@ Register Src="~/WebUserControl.ascx" TagPrefix="мойКонтрол" TagName="WebUserControl" %>
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы