#apache-flex #actionscript-3 #drop-down-menu #itemrenderer
#apache-flex #actionscript-3 #выпадающее меню #itemrenderer
Вопрос:
Я пытаюсь внести простые изменения в внешний вид выпадающего списка Flex 4.5 Spark, расширив его средство визуализации элементов, в любом случае, даже просто блестящий новый средство визуализации элементов приносит мне в результате элементы, метки которых являются пробелами. Если я удалю средство визуализации, все будет в порядке, но с ним — элементы будут пустыми белого цвета.
<s:DropDownList id="cbX" x="140" y="281" width="276" itemRenderer="comboItemRenderer" labelField="@text">
<mx:XMLListCollection>
<fx:XMLList>
<node text="1" />
<node text="2" />
<node text="3" />
</fx:XMLList>
</mx:XMLListCollection>
</s:DropDownList>
средство визуализации элементов :
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<s:Label text="{data}"/>
</s:ItemRenderer>
Это ошибка, или я делаю это неправильно?
Ответ №1:
Попробуйте использовать:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<s:Label text="{label}"/>
</s:ItemRenderer>
Данные для средства визуализации по-прежнему остаются данными. Но если вы используете labelField
, вы полагаетесь на процедуру вычисления меток списка. Так что просто отобразите это.
Комментарии:
1. Ради бога, где написано все эти вещи. Я чувствую, что прилетел из другой галактики : ( большое вам спасибо. это помогает, но я действительно не понимаю, как узнать об этих отношениях в данных…
2. По правде говоря
labelField
, это способ не использовать средство визуализации пользовательских элементов для отображения некоторого поля вашего элемента поставщика данных. В вашем случае использованиеlabel
в renderer аналогично использованиюdata.@text
. Поэтому, если ваш рендеринг такой же, как стандартный (как в вашем случае), просто используйте стандартный рендеринг по умолчанию. Если вы собираетесь использовать какой-либо расширенный инструмент визуализации элементов, вы можете удалитьlabelField
из списка и переместить всю логику внутри средства визуализации с помощьюdata
.