Проблемы проектирования с .Net UserControl

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

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


person Matt Nelson    schedule 19.08.2008    source источник


Ответы (3)


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

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

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

person Fredrik Kalseth    schedule 19.08.2008

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

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

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

person Rob Cooper    schedule 19.08.2008

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

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

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

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

person Matt Hamilton    schedule 19.08.2008