Платформа / язык и т. Д. Не ясны, поэтому этот ответ обязательно является расплывчатым ... однако в общем случае дочерний элемент управления не может получить доступ к свойствам родительского элемента (напрямую), поскольку множество различных типов родительских элементов управления может быть хозяином дочернего контроля. Дочерний объект не должен быть жестко запрограммирован для одного родителя, в противном случае это может быть также часть родителя.
Как правило, вы можете попытаться просто удалить требование - это звучит как странный дизайн. Однако некоторые фреймворки поддерживают что-то , например this - например, свойства зависимостей в WPF.
Дизайн на основе интерфейса (для родителя (ей)) - это один из подходов, но он не очень чистый. В .NET события и т. Д. Являются еще одним распространенным способом общения ребенка с родителем - ребенок представляет события, которые разные родители могут потреблять по-разному.
Кроме того, вы находитесь на территории тестирования / приведения родительского элемента (либо к классу, либо к интерфейсу) для доступа к деталям из родительского элемента - например:
ParentControlType parent = this.Parent as ParentControlType;
if(parent != null) {
// access properties etc of "parent"
}
(здесь также можно использовать интерфейс; в любом случае, он немного хакерский ...)
Лично, вместо того, чтобы использовать этот тип приведения от ребенка, я бы предпочел, чтобы родитель взял контроль; родительский объект устанавливает свойства для дочернего элемента и слушает события (а не дочерний набор свойств для родительского элемента):
// in the parent
child.SomeProperty = 132;
child.SomePropertyChangd += delegate {
// do something at the parent
};
Таким образом, ребенок не знает или не заботится о родителе. Все, что он знает, - это то, что он обладает свойствами (и т. Д.) И может уведомлять других людей об интересных изменениях.