Должны ли элементы управления пользовательского элемента поддерживаться свойствами? - PullRequest
3 голосов
/ 05 февраля 2010

Надеюсь, я это правильно заявляю. У меня есть приложение WinForm (3.5), которое имеет 1 форму, которая разбита на две области. 1 - это навигация, а другая, панель, - это контент. Вы выбираете то, что вам нужно, в разделе навигации, то есть демографии, а затем он встраивает пользовательский элемент управления, содержащий все элементы управления демографией на панели.

Я спрашиваю, должен ли каждый пользовательский элемент управления иметь Property для каждого Control. Пример: ucDemographics имеет текстовое поле с именем txtCity. Должно ли быть Property для хранения value из txtCity и предоставления моей Форме и другим пользовательским элементам управления доступа к ней?

Это общепринятая «Лучшая практика»?

Если нет, то что?

Ответы [ 2 ]

5 голосов
/ 05 февраля 2010

Это зависит от того, чего вы хотите достичь с помощью UserControl.

Обычно вы бы не выставляли txtCity, потому что вызывающий мог тогда манипулировать всем, что касается текстового поля. В большинстве сценариев вы бы выставляли только текущий текст в виде

public string CityText
{
    get { return this.txtCity.Text; }
}
2 голосов
/ 05 февраля 2010

Нет, это на самом деле не лучшая практика. Целью пользовательского элемента управления является создание нового элемента управления с его собственным поведением. У вас должно быть самое большее "несколько" свойств, методов и событий, которые являются открытыми и позволяют форме взаимодействовать с новым элементом управления. Если вы обнаружите, что единственный хороший способ работы с ним - это раскрыть составляющие его элементы управления, лучше не использовать UserControl, а просто поместить элементы управления непосредственно в форму.

...