Эту проблему легко решить, если вы пытаетесь использовать не-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 снова )Хотя я думаю, что описанный выше подход проще для того, чего вы пытаетесь достичь.
Если это не одна из этих проблем, расскажите нам немного подробнее о содержании вашего поставщика данных и существующих свойствах дерева и посмотритеесли мы не можем понять это тогда.Надеюсь, это все равно немного поможет.