我有一个通用功能来构建控件行(每行包括滑块、单选按钮、重置按钮、文本显示)等,以及一些基于这些更改底层数据的功能
由于我不想为每一行编写特定的代码,我编写了一些代码,通过这些代码我可以检测出发生鼠标事件的行,并且尽管该行访问每个单独的控制
使用的层次结构是标题窗口(弹出窗口的一部分)->可剥皮容器->HGroup->控制
当我跟踪单选按钮时,我得到的路径如下:Electric_Modify.TitleWindowSkin2260._TitleWindowSkin_Group1.contents.contentGroup.0.RadioButton2645
radioButton前面的"0"代表第一个Hgroup id->命名为0
我尝试访问单选按钮如下-HGroup中的第5个元素(this.contentGroup.getChildAt(row)as Group).getChildAt(4)as RadioButton).enabled=false;
并在此行上获得消息"无法访问null对象引用的属性或方法"。我应该如何在层次结构中导航以到达元素?
您应该使用getElementAt(…)而不是getChildAt(..)。
get元素函数表示"更高级别"的元素层次结构,这是使蒙皮更容易所必需的。
((this.getElementAt(row) as IVisualElementContainer).getElementAt(4) as RadioButton).enabled = false;
它看起来应该是这样的,但确切的层次结构取决于你的应用程序中的内容。
@drkstr
感谢您的投入。。。我想到了一种对我有效的替代方法…我通过绘制了HGroup的父代
parent1=hgrp.parent;然后引用这些按钮如下
((parent1.getChildAt(行)作为组).getChildAt(4)作为单选按钮)
这就像一场梦。。。我想你的建议会让我跳过中间层
@J_A_X/@Constantiner:谢谢你的建议。我不知道为什么我们没有仔细思考并走上DataGroup的道路。初步看来似乎更简单。。。我们开始在MXML中创建UI控件,并按顺序排列控件,当涉及到使其通用时,我们在AS中复制了MXML方法。一开始很容易,直到它导致了如上所述的问题。当我们升级版本时,我们会用更好的方法来解决这个问题。它现在工作