在Flex 4中,我有一个包含项目渲染器的Spark List组件。 我想通过单击选择列表中的项目,然后通过单击相同的选定项目取消选择它。像开/关开关一样。
我的项目渲染器具有以下状态:
<s:states>
<s:State name="normal"/>
<s:State name="hovered"/>
<s:State name="selected"/>
</s:states>
所以我尝试将click事件监听器添加到项呈示器中:
private function selectUnSelect():void {
if (currentState == 'selected') currentState = 'normal';
else currentState = 'selected';
}
行为尴尬......即使在选定状态下再次点击该项目,该项目也会保持选中状态。
考虑使用不带Command的List组件(在mac上)或Windows上的Control按钮。
答案 0 :(得分:3)
此博文可能对您有用:http://flexponential.com/2009/12/13/multiple-selection-in-a-spark-list-without-the-control-key/
答案 1 :(得分:1)
我不会让项目渲染器设置其状态,而是操作List本身。让项目渲染器在单击时调度包含项目渲染器数据的事件,然后为该事件添加侦听器(在扩展List的组件中或包含列表的组件中)。然后,您可以检查数据是否与List的selectedItems匹配。如果不是,请将该项追加到selectedItems。如果是这样,请将其从selectedItems中删除。希望有所帮助。