гибкое развертывание и свертывание значка в элементе управления Tree - PullRequest
0 голосов
/ 08 августа 2010

У меня возникли проблемы с управлением гибким деревом. У меня есть контроль в моей системе, и, конечно, он управляется данными.

У меня есть группа, которая показывает значок папки, и это нормально, но она также показывает значок раскрытия, когда элемент не имеет дочерних элементов.

Мне не нужно показывать значок раскрытия, когда у группы нет детей, но я хочу показать значок папки, потому что это разные объекты в моей системе.

вот пример того, о чем я говорю. Я все еще хочу показать значок папки, в этом случае значок расширения должен быть скрыт только для дочернего значка.

alt text

1 Ответ

1 голос
/ 08 августа 2010

Эту проблему легко решить, если вы пытаетесь использовать не-XML-провайдер данных (например, присваивая свойству dataProvider для Tree структуру вложенных ArrayCollections).В этом случае хитрость заключается в том, чтобы дать каждому узлу функцию children(), которая возвращает null (в отличие от пустого набора), если нет дочерних элементов.

Однако, если вы используете простойстарый XMLListCollection, что вы делаете, чтобы он вообще отображал значок папки?Если вы даете узлу пустой набор дочерних элементов, то снова появится значок раскрытия.Список дочерних узлов должен быть null.В качестве альтернативы, если для свойства isBranch узла установлено значение true, оно будет отображаться «неправильно», как указано выше.

Самый простой способ отобразить значок папки без значков расширения - просто заменитьвсе (действительно довольно некрасивые) значки по умолчанию с вашими собственными, что дает вам полный контроль над тем, как они выглядят.Что бы вы сделали, это задали три свойства: defaultLeafIcon, folderClosedIcon и folderOpenIcon ( хороший пример в примерах Flex ):

[Embed(source="folder.png")]
public var iconFolder:Class;

[Embed(source="folder.png")]
public var iconFolderOpen:Class;

<mx:Tree dataProvider="{yourData}"
    defaultLeafIcon="{iconFolder}"
    folderClosedIcon="{iconFolder}"
    folderOpenIcon="{iconFolderOpen}" />

Я вижу, вы ужеиспользуя набор иконок Silk, который имеет довольно хороший значок закрытой папки.По какой-то причине он не содержит значка открытой папки, но вы можете просто использовать закрытый значок или что-то еще.

Вы также можете просто использовать функцию iconF ( Примеры Flex снова )Хотя я думаю, что описанный выше подход проще для того, чего вы пытаетесь достичь.

Если это не одна из этих проблем, расскажите нам немного подробнее о содержании вашего поставщика данных и существующих свойствах дерева и посмотритеесли мы не можем понять это тогда.Надеюсь, это все равно немного поможет.

...