Вы не можете полностью скрыть это от конечного пользователя, и, честно говоря, вам не нужно.Если кто-то хочет использовать ваш пользовательский элемент управления напрямую, он должен быть достаточно тупым, чтобы просто отображать свойства, установленные для него, независимо от того, были ли они установлены через докладчик.
Лучший вы однако может сделать (если вы все еще настаиваете на сокрытии этих свойств от своего пользователя), это реализовать IView
явно:
class View : UserControl, IView {
CheckBox checkBox1;
Presenter presenter;
string IView.Param {
// SKIP THAT: I know I should raise an event here.
set { presenter.Param = value; }
}
bool IView.Checked {
set { checkBox1.Checked = value; }
}
public View() {
presenter = new Presenter(this);
checkBox1 = new CheckBox();
Controls.Add(checkBox1);
}
Таким образом, если кто-то просто делает:1010 *
у них не будет доступа к этим свойствам.