我有一个在ParentUserControl中加载的ChildUserControl.主机页面加载ParentUserControl.
我需要从ChildUserControl访问ParentUserControl中的属性.
谢谢你的时间
平台/语言等不清楚,所以这个答案必然含糊不清......但是,一般来说,子控件无法从父(直接)访问属性,因为许多不同类型的父控件可以托管儿童控制.不应将孩子硬编码为单亲,否则也可能是父母的一部分.
通常,您可能想要尝试简单地删除要求 - 这听起来像一个奇怪的设计.然而,一些框架支持的东西像这样-例如,依赖属性在WPF.
基于接口的设计(对于父(s))是一种方法,但这不是很干净.对于.NET,事件等是孩子与父母交流的另一种常见方式 - 孩子暴露不同父母可以以不同方式消费的事件.
除此之外,您将进入测试/转换父级(针对类或接口)以访问父级的详细信息 - 例如:
ParentControlType parent = this.Parent as ParentControlType; if(parent != null) { // access properties etc of "parent" }
(也可以在这里使用界面;无论哪种方式还是有点hacky ......)
就个人而言,我宁愿父母控制,也不愿使用这种类型的儿童演员.父设置子项的属性,并侦听事件(而不是父项上的子设置属性):
// in the parent child.SomeProperty = 132; child.SomePropertyChangd += delegate { // do something at the parent };
这样,孩子不知道或不关心父母.它只知道它有属性(等),并可以通知其他人有趣的变化.