1

在 Flex 4 中,我有一个带有项目渲染器的 Spark List 组件。我想通过单击来选择列表中的一个项目,并通过单击相同的选定项目来取消选择它。就像一个开/关开关。

我的项目渲染器具有以下状态:

<s:states>
<s:State name="normal"/>
<s:State name="hovered"/>
<s:State name="selected"/>
</s:states>

所以我尝试向项目渲染器添加一个单击事件侦听器:

private function selectUnSelect():void {
if (currentState == 'selected') currentState = 'normal';
else currentState = 'selected';

}

有一个尴尬的行为......即使在选定状态下再次单击该项目后,该项目仍保持选中状态。

考虑使用没有 Command(在 Mac 上)或 Windows 上的 Control 按钮的 List 组件。

4

2 回答 2

3

This blog post might be useful to you: http://flexponential.com/2009/12/13/multiple-selection-in-a-spark-list-without-the-control-key/

于 2010-12-14T23:17:40.803 回答
1

我不会让项目渲染器设置其状态,而是对 List 本身进行操作。让您的项目渲染器在单击时调度一个包含项目渲染器数据的事件,然后为该事件添加一个侦听器(在扩展 List 的组件中,或在包含您的列表的组件中)。然后,您可以检查数据是否与列表的任何选定项匹配。如果不是,则将该项目附加到 selectedItems。如果是这样,请将其从 selectedItems 中删除。希望有帮助。

于 2010-12-14T19:22:40.977 回答