【发布时间】:2010-11-14 11:25:03
【问题描述】:
我有一个 UI 组件,由于各种原因,我必须以编程方式构建它。该组件是一个按列分组的单选按钮表。
现在,我正在像这样构建列组:
private function createGroupsForItemList(items: XMLList): void {
for each (var item: XML in items) {
var rbGroup: RadioButtonGroup = new RadioButtonGroup();
groups[item.@level.toString()] = rbGroup;
}
}
我正在尝试将 RadioButton 实例与列组相关联,如下所示:
private function createValueControl(item: XML): UIComponent {
var control: RadioButton = new RadioButton();
control.label = "";
control.group = groups[item.@level.toString()];
control.addEventListener(Event.SELECT, updateSelection);
return control;
}
我可以在调试器中看到控件与组有关联:
control.group == groups[item.@level.toString()]
但是,我同样可以看到该组对控件一无所知:
group.radioButtons.length == 0
我想这是因为RadioButton 中group 的设置器是一个愚蠢的设置器;它所做的只是复制到变量中,这并没有像groupName 那样发挥作用。但是,我似乎找不到正确设置 RadioButton.groupName 属性的值。
所以,简而言之,我不知道如何让这些位相互交谈。我该怎么做?
-- 编辑--
事实证明,我可以简单地通过设置 groupName 属性来创建和关联组,但我无法在组中设置选择侦听器;该组在设置过程后立即为 NULL,这意味着下面的第二行抛出了 NPE 的 Flex 等效项:
control.groupName = groupNameForLevel(item);
control.group.addEventListener(Event.SELECT, updateSelection);
【问题讨论】:
-
也许 control.validateNow() 在这里会有所帮助。
标签: apache-flex actionscript-3 flex3