Проблемы проектирования с .Net UserControl - PullRequest
3 голосов
/ 19 августа 2008

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

Как мне заставить мои изменения дизайна прилипнуть к ListView?

Ответы [ 3 ]

6 голосов
/ 19 августа 2008

Вам необходимо украсить свойство ListView с помощью атрибута DesignerSerializationVisibility, например:

[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ListView MyListView { get { return this.listView1; } }

Указывает генератору кода дизайнера выводить код для него.

1 голос
/ 19 августа 2008

Фредрик прав, в основном, когда вам нужно разрешить конструктору сохранить свойство на странице, чтобы его можно было создать во время выполнения. Есть только один способ сделать это - записать его значения на страницу ASPX, которая затем выбирается средой выполнения.

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

Всегда помните, что страница (и ее содержимое) и код полностью разделены в ASP.NET, они подключаются во время выполнения. Это означает, что вы не получаете хорошую поддержку конструктора кода, как в приложении WinForms (где форма является экземпляром объекта).

0 голосов
/ 19 августа 2008

Просто, чтобы я понял, вы сделали что-то вроде этого, верно?

public ListView MyListView { get { return this.listView1; } }

Итак, вы обращаетесь (во время разработки) к свойству MyListView в вашем UserControl?

Я думаю, что если вам нужна надлежащая поддержка во время разработки, вам лучше изменить свойство «Модификатор» в самом ListView (обратно на исходный UserControl) на Public - таким образом вы можете изменять ListView непосредственно в экземплярах UserControl. В любом случае, мне это удалось.

...