2010-12-14 3 views
1

В Flex 4 у меня есть компонент списка искр с рендерингом элементов. Я хотел бы, чтобы выберите элемент в списке, нажав на него, и отмените выбор его, нажав на тот же выделенный пункт. Как переключатель включения/выключения.Flex 4 - выберите и снимите тот же элемент в <s: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'; 

}

с неловким поведением ... где элемент остается выбранным даже после повторного нажатия на него в выбранном состоянии.

Подумайте об использовании компонента «Список» без команды (на Mac) или кнопки «Управление» в окнах.

+0

Можно ли добавить свойство к вашей основной DataProvider, что указывало бы, был ли выбран элемент или нет? Что-то вроде: public var isSelected: Boolean = true? –

ответ

1

Вместо того, чтобы объект рендеринга элементов устанавливал свое состояние, я работал бы на самом Списке. Попросите обработчик вашего объекта отправить событие при его нажатии, которое включает данные средства визуализации элементов, а затем добавит слушателя для этого события (либо в компонент, который расширяет список, либо в компоненте, который содержит ваш список). Затем вы можете проверить, соответствуют ли данные любому из выбранных элементов вашего списка. Если нет, добавьте элемент в selectedItems. Если это так, удалите его из выбранных элементов. Надеюсь, это поможет.